我习惯Python's itertools用迭代器(F#:sequences)做功能性事情,并想知道F#中是否有等价物或者是常用的库,因为它们非常方便。
我的顶级工具是:
*我认为这3个会在F#中产生monad?你如何让它们变得无限?
我被提示问,因为我看到了this question on permutations in F#并且感到惊讶的是它不是图书馆的一部分或是内置于该语言中。
答案 0 :(得分:5)
我不知道是否有一个常用的库包含产品,组合和排列等功能,但您提到的其他库已经在Seq
和List
模块中,或者可以实现没有太多麻烦,System.Linq.Enumerable
中还有一些有用的方法。
takewhile
- > Seq.takeWhile
dropwhile
- > Seq.skipWhile
chain
- > Seq.concat
repeat
- > Seq.initInfinite
count(10)
- > Seq.initInfinite ((+) 10)
cycle([1, 2, 3])
- &gt; Seq.concat <| Seq.initInfinite (fun _ -> [1; 2; 3])
您可能还想查看优秀的FSharpx库 - 它包含许多有用的函数来处理集合等等。