【发布时间】:2016-10-28 06:34:32
【问题描述】:
我正在 http://www.cis.upenn.edu/~cis194/spring13/lectures.html 中做作业 2 中的练习 3
build :: [LogMessage] -> MessageTree
build [x] = Node Leaf x Leaf
build [x,y] = Node (build [x]) y Leaf
build [x,y,z] = Node (Node (build [x]) y Leaf) z Leaf
我有一个问题,我不知道如何结束模式匹配。它会继续扩展到[x,y,z,_],然后是[x,y,z,_,_],依此类推。我该如何阻止这种情况?
【问题讨论】:
-
这是一个左折叠 - 即见this graphic
-
最近我自己遇到了一个相关的问题,试图将我在列表到树函数中的临时分配推送到 GHC 的评估堆栈上,这有点有趣。最后,我得出结论,唯一的方法可能是为每个树脊形状设置一条线,这方式太多线了。
标签: haskell design-patterns tree matching infinite