代码之家  ›  专栏  ›  技术社区  ›  gatoatigrado

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

  •  4
  • gatoatigrado  · 技术社区  · 14 年前

    有没有一种方法提取成员函数,并将它们用作f函数?我想写下以下内容:

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

    如果你[让]

    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 回复  |  直到 14 年前
        1
  •  5
  •   Community taleinat    7 年前

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

    1. 不。
    2. 也许是语法 string#Split , "foo"#Split ,或者只是 #Split (推断类型)将在将来添加。但是 Don Syme's proposal 托马斯所联系的是从2007年开始的,所以我不知道这种情况有多可能发生——我想大概和懒惰的特定语法一样可能发生。

    编辑:

    我猜 “福”分裂 也可以写为 string#Split "foo" . 我想这取决于你如何灵活地定义 # 语法。

        2
  •  3
  •   Brian    14 年前

    使用

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

    现在。例如

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