将CoffeeScript高阶函数转换为Haskell

时间:2014-05-24 14:24:43

标签: haskell coffeescript

阅读优秀的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翻译

2 个答案:

答案 0 :(得分:5)

我认为你正在寻找const

const :: a -> b -> a

const的“功能性”外观是,对于所有x :: aconst xb -> 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指出的那样。