在haskell中,部分應用使用分節的中綴函數是可行的,例如考慮到中綴函數<(小於)可以部分應用任何函數的參數:(5 <), (< 5)F#中的中綴函數的部分應用
換句話說,在Haskell我們有以下速記符號:
op :: a -> b -> c
(`op` y) === \x -> x `op` y
(x `op`) === \y -> x `op` y
確實F#有一個類似的概念?
在haskell中,部分應用使用分節的中綴函數是可行的,例如考慮到中綴函數<(小於)可以部分應用任何函數的參數:(5 <), (< 5)F#中的中綴函數的部分應用
換句話說,在Haskell我們有以下速記符號:
op :: a -> b -> c
(`op` y) === \x -> x `op` y
(x `op`) === \y -> x `op` y
確實F#有一個類似的概念?
不,這些都沒有(除了標準的部分申請,如(=) x
)。
而我喜歡的Seq.find ((=) x)
的簡潔,像Seq.filter ((<) 3)
(甚至Seq.map (flip (-) 1)
)事情只是讀起來拗口,應立即用lambda表達式替換,海事組織。
如果你想創造自己的標準......
let lsection x f y -> f x y
let rsection f y x -> f x y
然後lsection 5 (<) === (5 <)
和rsection (<) 5 === (< 5)
。
雖然真的,沒有語言支持,只需在裏面放一個lambda,它會更清晰。
感謝您的及時答覆。這只是來自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
然後不要寫那個;) – ephemient 2010-01-01 22:52:16
那麼,這是我的'(真的)尷尬的'的定義;) – 2010-01-01 23:26:50