Haskell在CoffeeScript中的$(函数应用程序运算符)?

时间:2013-10-17 11:48:09

标签: haskell coffeescript functional-programming

在CoffeeScript中,是否存在类似于Haskell的$运算符的概念?我似乎无法找到关于这个问题的任何内容,但我相信我曾经在GitHub上看到过一个问题。

我想做的是写

foo = bar $ baz 1 2

而不是

foo = bar (baz 1 2)

2 个答案:

答案 0 :(得分:1)

看起来你可能对Haskell中$的确切含义感到有些困惑。

its type - (a -> b) -> a -> b - $可以看出,只有“知道”两个论点。

因此,在foo = bar $ baz 1 2示例中,$并未“了解”baz 1 2

分组发生的原因是因为“函数应用程序的优先级高于任何中缀运算符”(source)。因此,使用中缀运算符.的相同表达式的解析方式完全相同:

foo = bar . baz 1 2  -- also parsed as `bar (baz 1 2)`
                     --   because of function application's high precedence

因此,$所做的唯一事情是采用两个参数并将第一个应用于第二个。只要Coffeescript允许更高阶函数,实现$就很简单了。您注意到的其余行为是Haskell语言的一部分。

答案 1 :(得分:0)

阅读上面发布的GitHub问题,似乎已经多次争论不休了。然而,目前还没有结论,但似乎并没有将其纳入其中。

一个人alexkg在CoffeeScript的his own fork中实现了该功能,并命名了运算符<-