3

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

我想做的是写

foo = bar $ baz 1 2

代替

foo = bar (baz 1 2)
4

2 回答 2

1

看来您可能对$Haskell 中的具体功能有些困惑。

从它的类型可以看出——“知道”两个参数。 (a -> b) -> a -> b$

因此,在您的foo = bar $ baz 1 2示例中,$不“了解” baz 1 2.

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

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

因此,唯一要做的$就是接受两个参数并将第一个应用于第二个。只要 Coffeescript 允许高阶函数,实现$. 您注意到的其余行为是 Haskell 语言的一部分。

于 2013-10-24T21:29:00.173 回答
0

阅读上面发布的 GitHub 问题,似乎已经对它进行了不止一次的激烈辩论。然而,没有结论,但似乎它不会被包括在内。

一个叫 alexkg的人在他自己的 CoffeeScript 分支中实现了这个功能,命名为 operator <-

于 2013-10-17T12:20:23.820 回答