雖然在Haskell寫一些lambda函數,我本來寫類似的功能:Haskell - Lambda微積分等效語法?
tru = \t f -> t
fls = \t f -> f
不過,我很快就從例子中注意到網上,這樣的功能是經常這樣寫:
tru = \t -> \f -> t
fls = \t -> \f -> f
具體,傳遞給函數的每個項目都有自己的\
和->
而不是上面的。當檢查它們的類型時,它們看起來是相同的。我的問題是,它們是否相同或它們在某種程度上有所不同?而不僅僅是這兩個功能,但它是否對一般功能有所幫助?非常感謝!
我應該注意的是,雖然我更喜歡大多數事物的第一個或最後一個,但第二個也是有時候的替代方案,例如定義運算符時。你可以想象做一些像'f。 g = \ x - > f(g x)'。 – kqr
這是正確的,但轉型不是曲解;它只是語法糖。 Currying將'(a,b) - > c'轉換爲'a - >(b - > c)'(因此'curry ::((a,b) - > c) - > a - > b - > c ')。確實,這個符號的設計是爲了簡化編寫curried函數。 (這可能是你想說的,但我認爲這值得明確。) –