有没有办法提取成员函数,并将它们用作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)
答案 0 :(得分:5)
这与a question I asked a few days ago非常相似(但你的措辞更好)。共识似乎是:
string#Split
,"foo"#Split
或仅#Split
(类型推断)。但Tomas所关联的Don Syme's proposal是从2007年开始的,所以我不知道它有多大可能发生 - 可能与懒惰的特定语法一样,我猜。编辑:
我猜"foo"#Split
也可以写成string#Split "foo"
。我想这取决于你如何灵活地定义#
语法。
答案 1 :(得分:3)
使用
(fun x -> x.Member ...)
现在。例如
someString |> (fun s -> s.Split "\n") |> ...