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

为什么F#s集合。Seq模块基本上重新实现了所有的可枚举扩展方法?

  •  3
  • Timwi  · 技术社区  · 14 年前

    Collections.Seq module 有许多方法似乎等同于中声明的扩展方法 System.Linq.Enumerable

    (如果他们需要一些额外的方法,为什么不直接添加到 System.Linq.Enumerable可枚举

    3 回复  |  直到 14 年前
        1
  •  7
  •   Brian    14 年前

    这里还有一些不错的答案,但我的看法很简单

    • 部分应用程序(.NET方法是元组,F方法是curried)

    因此F#有自己的库,可以很好地与F#配合使用。(这是一个快速解码环 blog .)

        2
  •  7
  •   desco    14 年前

    因为LINQ方法位于系统核心=>仅在.NET 3.5及更高版本上可用,并且F基本库支持.NET 2.0+。

        3
  •  6
  •   gandjustas    14 年前

    另一个原因是在F中使用管道操作符(|>、<|、>)。

    .NET扩展方法是基本的,它为第一个参数提供了部分应用程序。F#流水线运算器partial适用于最后一个参数。Seq模块中的所有函数都将sequence作为最后一个参数。

    C级#

    seq.Where(...)
       .Select(...)
       .Take(...)
    

    F级#

    seq
    |> Seq.filter ...
    |> Seq.map ...
    |> Seq.take ...