F#:使用成员函数作为未绑定函数的任何方法?

时间:2010-06-11 20:01:35

标签: f# function member-functions

有没有办法提取成员函数,并将它们用作F#函数?我希望能够写下以下内容:

mystring |> string.Split '\n' |> Array.filter (string.Length >> (=) 0 >> not)

如果[let]

,上面的代码可以使用
let mystring = "a c\nb\n"
let stringSplit (y:char) (x:string) = x.Split(y)
let stringLength (x:string) = x.Length
mystring |> stringSplit '\n' |> Array.filter (stringLength >> (=) 0 >> not)

2 个答案:

答案 0 :(得分:5)

这与a question I asked a few days ago非常相似(但你的措辞更好)。共识似乎是:

  1. 没有
  2. 将来可能会添加语法string#Split"foo"#Split或仅#Split(类型推断)。但Tomas所关联的Don Syme's proposal是从2007年开始的,所以我不知道它有多大可能发生 - 可能与懒惰的特定语法一样,我猜。
  3. 编辑:

    我猜"foo"#Split也可以写成string#Split "foo"。我想这取决于你如何灵活地定义#语法。

答案 1 :(得分:3)

使用

(fun x -> x.Member ...)

现在。例如

someString |> (fun s -> s.Split "\n") |> ...