2013-10-17 18 views
3

在CoffeeScript中,是否存在與Haskell的$運算符類似的概念?我似乎無法找到關於此主題的任何內容,但我相信我曾經在GitHub上看到過一個問題。

我想這樣做是寫的

foo = bar $ baz 1 2 

代替

foo = bar (baz 1 2) 
+4

https://github.com/jashkenas/coffee-script/issues/1614 – Vladimir

+0

您可能會喜歡<| LiveScript:http://livescript.net/ – homam

回答

0

看完上面貼GitHub的問題,似乎已經被激烈的爭論超過一次。然而,沒有任何結論,但它似乎並不包括將被包括在內。

一個人,alexkg實施CoffeeScript的his own fork中的功能,命名爲運營商<-

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語言的一部分。

相關問題