F#:有什么方法可以将成员函数用作未绑定(bind)函数?

标签 f# function member-functions

有没有办法提取成员函数,并将它们用作 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)

最佳答案

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

  • 号码
  • 也许语法 string#Split , "foo"#Split , 或只是 #Split (类型推断)将在 future 添加。但是Don Syme's proposal与 Tomas 相关的是从 2007 年开始,所以我不知道它发生的可能性有多大——我猜可能与懒惰的特定语法一样可能。

  • 编辑:

    我猜"foo"#Split也可以写成 string#Split "foo" .我想这取决于您定义 # 的灵活程度。句法。

    关于F#:有什么方法可以将成员函数用作未绑定(bind)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025830/

    相关文章:

    F# 记录结构比较排序

    error-handling - 在 F# 中表示错误的最惯用的方式是什么

    f# - 从静态 ProvidedMethod 返回 ProvidedType

    types - 使用F#区分联合替代作为参数类型

    javascript - 重复扰乱功能,直到输出与输入不同

    c++ - 为什么允许 "a.template foo<0>();"即使 "a.foo<0>();"已经足够了?

    c++ - 为 std::bind 创建模板包装器

    python - Python 在全局范围内提供一些默认方法的原因是什么?

    javascript - 连接输出 - 初级函数

    c++ - 如何在 Visual Studio 11 中将成员函数直接绑定(bind)到 std::function?