我試圖找出背後「柯里化」的因果邏輯,並得出以下結果:爲什麼哈斯克爾有一個參數
- 多個參數函數可以表達爲元組(結合多個參數以不同類型作爲一個參數)和列表(將多個參數與同一類型組合爲一個參數)。所以所有函數都可以表示爲單參數函數。
- 所以在Haskell中,函數只需要一個參數。我們如何實現多參數函數。
- 使用柯里。柯里化是實現多個參數功能的一種方式。
我認爲上述邏輯1 - > 2 - > 3是混淆回答「爲什麼使用咖喱」。對於語句3,還可以將多個元組或列表組合爲單個參數來實現多個參數函數。
看起來聲明1不是聲明2的正確理由。我敢肯定的是2-> 3是正確的推理,但背後的原因是什麼?爲什麼Haskell作爲一種函數式語言,只有一個參數?
大多數書籍將語句2視爲公認的事實。有人知道2背後的原因嗎?還是有人知道「爲什麼要加油」的正確邏輯?
你問:「爲什麼要使用咖喱?」,這意味着在某些時候有人認爲:「讓我們用柯里化來解決我們有的語言設計問題。」但事實並非如此。有人認爲,「讓我們製作一種簡單,優雅,表達,方便,安全和靈活的語言。」解決這些問題的方法是使用具有歸納類型的lambda微積分,一個很好的類型系統以及一種不尋常的減少策略。 「使用柯里化」不是解決這些問題的方法之一,而是解決這些問題的巧妙便捷的工具。 –
如果你想到產品類型的元組(例如:「Bool」有兩個居民,「Maybe Bool」有三個居民,(Bool,Maybe Bool)有六個居民),那麼函數類型就是指數。由於'e ^(x * y)=(e^x)^ y',您總是可以用類型'(x,y) - > e'將類型爲'y - >(x - > e)'。這簡直就是咖啡。因爲您總是可以重寫這些函數(在這種情況下,成本相對較低),所以您不需要*將多參數函數作爲一個基本概念,否則會使語言定義複雜化。 –