在CoffeeScript中,是否存在與Haskell的$運算符類似的概念?我似乎無法找到關於此主題的任何內容,但我相信我曾經在GitHub上看到過一個問題。
我想這樣做是寫的
foo = bar $ baz 1 2
代替
foo = bar (baz 1 2)
在CoffeeScript中,是否存在與Haskell的$運算符類似的概念?我似乎無法找到關於此主題的任何內容,但我相信我曾經在GitHub上看到過一個問題。
我想這樣做是寫的
foo = bar $ baz 1 2
代替
foo = bar (baz 1 2)
看完上面貼GitHub的問題,似乎已經被激烈的爭論超過一次。然而,沒有任何結論,但它似乎並不包括將被包括在內。
一個人,alexkg實施CoffeeScript的his own fork中的功能,命名爲運營商<-
。
看來你可能會略微困惑什麼$
在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語言的一部分。
https://github.com/jashkenas/coffee-script/issues/1614 – Vladimir
您可能會喜歡<| LiveScript:http://livescript.net/ – homam