阅读优秀的CoffeeScript Ristretto,我遇到了这个函数:
((x) ->
(y) ->
x
)(1)(2)
我的理解是结果x
与输入x
相同。
Haskell版本(*)会是这样的吗?
foo :: a -> b -> (a -> b) -> a
foo x y f = x
*注意 - 我不知道Haskell的强大类型系统v.CoffeeScript是否有1-1翻译
答案 0 :(得分:5)
我认为你正在寻找const
:
const :: a -> b -> a
const
的“功能性”外观是,对于所有x :: a
,const x
是b -> a
类型的常量函数 - 它会返回x
值。
可能的实施方式是:
const x y = x
所以const 1 2 == 1
。
答案 1 :(得分:3)
看起来像直接转换为Haskell
(\x -> \y -> x) 1 2
因此,您可以将foo
定义为
foo = \x -> \y -> x
这是const
,正如@Benesh指出的那样。