虽然在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函数。 (这可能是你想说的,但我认为这值得明确。) –