【发布时间】:2018-08-29 07:23:18
【问题描述】:
我正在使用以下类型的树的一个版本:
Tree = Empty | Leaf Event | Split String [(String, Tree)]
我的目标是获得一个函数,它返回一对列表 [(Event,[Int])] 与 [Int] 是每个事件的坐标(在树中到达它的路径),即如果树是:
Split str [(str2, Leaf event), (str3, Empty)]
然后我希望它返回[event,[0]]。我想忽略树的任何空头。
所以我的函数看起来像
coords :: Tree -> [(Event,[Int])]
coords Empty = []
coords (Leaf event) = [event, []]
然后对于拆分,它需要递归地将函数应用于每个子树。我想这样做:
coords Split str xs = zip (coords trees) [1..] where
trees = [snd(str,tree) | (str,tree) <-xs]
但这会给我提供任意长度的嵌套列表,以及其他几个问题。有什么想法吗?
【问题讨论】:
标签: haskell recursion functional-programming tree multiway-tree