2010-01-01 18 views
3

在haskell中,部分應用使用分節的中綴函數是可行的,例如考慮到中綴函數<(小於)可以部分應用任何函數的參數:(5 <), (< 5)F#中的中綴函數的部分應用

換句話說,在Haskell我們有以下速記符號:

op :: a -> b -> c 
(`op` y) === \x -> x `op` y 
(x `op`) === \y -> x `op` y 

確實F#有一個類似的概念?

回答

5

不,這些都沒有(除了標準的部分申請,如(=) x)。


而我喜歡的Seq.find ((=) x)的簡潔,像Seq.filter ((<) 3)(甚至Seq.map (flip (-) 1))事情只是讀起來拗口,應立即用lambda表達式替換,海事組織。

+0

感謝您的及時答覆。這只是來自haskell過濾器(<5)[1..10]產生[1,2,3,4],它讓我感到困惑,在F#List.filter((<)5)[1..10]返回[6; 7; 8; 9; 10]! – primodemus 2010-01-01 22:50:52

+2

然後不要寫那個;) – ephemient 2010-01-01 22:52:16

+2

那麼,這是我的'(真的)尷尬的'的定義;) – 2010-01-01 23:26:50

4

如果你想創造自己的標準......

let lsection x f y -> f x y 
let rsection f y x -> f x y 

然後lsection 5 (<) === (5 <)rsection (<) 5 === (< 5)

雖然真的,沒有語言支持,只需在裏面放一個lambda,它會更清晰。