相关疑难解决方法(0)

F#List SelectMany

这是一个非常简单的问题,但我找不到答案:

在F#中是否有任何Seq/List操作来匹配LINQ SelectMany?

  • 我知道如果我愿意,我可以在F#中使用System.Linq.
  • 我知道我可以制作一个递归方法并使用F#Computation Expressions(并制作更强大的东西).

但是,如果我试图证明F#List操作比LINQ更强大......

  • .Where = List.filter
  • .Select = List.map
  • .Aggregate = List.fold
  • ...

在C#SelectMany使用语法非常简单:

var flattenedList = from i in items1
                    from j in items2
                    select ...
Run Code Online (Sandbox Code Playgroud)

有没有简单的直接匹配,List.flatten,List.bind或类似的东西?

SelectMany有几个签名,但最复杂的签名似乎是:

IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IEnumerable<TSource> source, 
    Func<TSource, IEnumerable<TCollection>> collectionSelector, 
    Func<TSource, TCollection, TResult> resultSelector
);
Run Code Online (Sandbox Code Playgroud)

在F#术语中,这将是:

('a -> 'b list) -> ('a -> 'b -> 'c) -> 'a list -> 'c list
Run Code Online (Sandbox Code Playgroud)

linq f#

30
推荐指数
3
解决办法
8379
查看次数

FSharp.Core中`id`函数的用途是什么?

来自Operators.id <'T>功能(F#):

身份功能.

参数:x类型:'T(输入值)

返回值:相同的值

F#核心库版本,支持:2.0,4.0,Portable

为什么有一个返回其输入的函数?

.net f# identity

26
推荐指数
2
解决办法
1898
查看次数

标签 统计

f# ×2

.net ×1

identity ×1

linq ×1