F# 用于F的Itertools#
我习惯于用迭代器(F#:序列)做函数式的事情,我想知道F#或常用的库中是否有等价物,因为它们非常方便 我最喜欢的工具是:F# 用于F的Itertools#,f#,itertools,F#,Itertools,我习惯于用迭代器(F#:序列)做函数式的事情,我想知道F#或常用的库中是否有等价物,因为它们非常方便 我最喜欢的工具是: 积:笛卡尔积,相当于嵌套for循环 组合 排列 花时间 中途 链:将多个迭代器链在一起,形成一个新的更长的迭代器 重复*:重复(5)->5,5,5 计数*:计数(10)->10,11,12 循环*:循环([1,2,3])->1,2,3,1,2 *我想这3个会产生F#中的单子?你如何使它们无限 我被提示询问,因为我看到它不是库的一部分,也不是内置在语言中的,我很惊讶。我不知
- 积:笛卡尔积,相当于嵌套for循环
- 组合
- 排列
- 花时间
- 中途
- 链:将多个迭代器链在一起,形成一个新的更长的迭代器
- 重复*:重复(5)->5,5,5
- 计数*:计数(10)->10,11,12
- 循环*:循环([1,2,3])->1,2,3,1,2
我被提示询问,因为我看到它不是库的一部分,也不是内置在语言中的,我很惊讶。我不知道是否有一个常用的库包含产品、组合和置换等功能,但是您提到的其他方法已经在
Seq
和List
模块中,或者可以轻松实现,并且System.Linq.Enumerable
中也有一些有用的方法
->takewhile
Seq.takewhile
->dropwhile
Seq.skipWhile
->chain
Seq.concat
->重复
Seq.initInfinite
->count(10)
Seq.initInfinite(+)10)
->循环([1,2,3])
Seq.concat[1;2;3])
您可能还想查看优秀的FSharpx库——它包含许多有用的函数来处理集合等等。
TakeWhile
,dropwhile
链接和重复都包含在默认的F#libs中。