小编Alt*_*ate的帖子

F# - 遍历不是定义为结构而是定义为函数的树: ls: 'a -> 'a seq

太棒了;转到我的问题

我相信这里提出的问题一定不是什么新问题,但我没有找到任何直接对应的讨论。

假设我有以下函数(为了提供具有相同结构属性的实际函数的确定性替代,类型为'a -> 'a seq):

// I'm a function that looks suspiciously like a tree
let lsExample x =
    match x with
    | 0 -> seq { 1; 6; 7 }
    | 1 -> seq { 2; 3 }
    | 3 -> seq { 4; 5 }
    | 7 -> seq { 8; 9 }
    | _ -> Seq.empty
Run Code Online (Sandbox Code Playgroud)

现在,我希望拥有以下内容:

let lsAll: ('a -> 'a seq) -> 'a -> 'a seq
Run Code Online (Sandbox Code Playgroud)

这样

lsAll lsExample 0
Run Code Online (Sandbox Code Playgroud)

评估为 …

f# functional-programming tail-recursion depth-first-search preorder

3
推荐指数
1
解决办法
151
查看次数