中缀函数在F#中的部分应用

时间:2010-01-01 22:03:30

标签: haskell f# func

在haskell中,可以使用部分部分地应用中缀函数,例如给定中缀函数< (小于)可以部分应用任何函数的参数:(5<),(< 5)

换句话说,在haskell中我们有以下简写符号:

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

F#有类似的概念吗?

2 个答案:

答案 0 :(得分:5)

不,这些都没有(除了标准的部分应用程序,如(=) x)。


虽然我喜欢Seq.find ((=) x)的简洁性,但Seq.filter ((<) 3)(甚至Seq.map (flip (-) 1))之类的内容很难阅读,应该立即被lambda表达式替换为imo。

答案 1 :(得分:4)

如果你想发明自己的标准......

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

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

尽管如此,如果没有语言支持,只需将lambda放在那里就会更清楚。