Grz*_*nio 3 recursion f# sequence
相当简单的问题,但快速谷歌搜索没有给我答案.
为序列编写递归函数的标准方法是什么?对于列表,您可以使用空列表和头+尾模式进行模式匹配,序列的等价物是什么?
没有标准的方法可以这样做,因为你很少编写序列的递归函数.
您应该查看Seq模块中的各种高阶函数.它们通常绰绰有余,因此您不必自己编写递归函数.
要以递归方式生成序列,序列表达式是一种简单直观的方法:
let rec allFiles dir =
seq { yield! Directory.GetFiles dir
for d in Directory.GetDirectories dir do
yield! allFiles d }
Run Code Online (Sandbox Code Playgroud)
如果你必须分解序列并以递归方式操作它,那么你做错了.您应该从F#PowerPack操作List或LazyList,并将结果转换回序列.