F#中序列的递归函数

Grz*_*nio 3 recursion f# sequence

相当简单的问题,但快速谷歌搜索没有给我答案.

为序列编写递归函数的标准方法是什么?对于列表,您可以使用空列表和头+尾模式进行模式匹配,序列的等价物是什么?

pad*_*pad 5

没有标准的方法可以这样做,因为你很少编写序列的递归函数.

您应该查看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操作ListLazyList,并将结果转换回序列.