Haskell 重写树
我有一个表示类型签名的数据结构,这个数据结构是一棵树,在第一张图片中以红色为例。我想得到黑色的,到目前为止,我只得到了橙色的(第二张图片),这是类型树,但相关的左侧 这是我到目前为止得到的橙色树(按照橙色箭头) 我已经解决了这个问题,非常漂亮地打印了树,然后用解析器组合器对其进行解析,但是这种低效率是不可取的。我想我可以有另一个算法来将橙色的树转换成黑色的树,但是如果我不编写两个算法,而是只编写一个,那就更好了 当我在上面写我的解决方案时,我将把它标记为Haskell。我可以提供代码来获得类似红树的数据结构,但我认为这只会使解决方案的尝试变得复杂 我想知道该算法是否有名称和/或红树中操作员位置的名称。是前缀吗Haskell 重写树,haskell,tree,binary-tree,computer-science,Haskell,Tree,Binary Tree,Computer Science,我有一个表示类型签名的数据结构,这个数据结构是一棵树,在第一张图片中以红色为例。我想得到黑色的,到目前为止,我只得到了橙色的(第二张图片),这是类型树,但相关的左侧 这是我到目前为止得到的橙色树(按照橙色箭头) 我已经解决了这个问题,非常漂亮地打印了树,然后用解析器组合器对其进行解析,但是这种低效率是不可取的。我想我可以有另一个算法来将橙色的树转换成黑色的树,但是如果我不编写两个算法,而是只编写一个,那就更好了 当我在上面写我的解决方案时,我将把它标记为Haskell。我可以提供代码来获得类
谢谢。看看递归方案。这里有一个相关问题,包括大量链接:
关于这个问题的所有链接都非常好,但我会特别看Tim Williams的幻灯片(我对这个问题的回答中的链接),以了解各种不同递归模式的具体实现(其中大多数是在树结构上演示的)。您拥有的是
(a->b)->c
。你得到的是(a->b)->c
。你想要的是a->(b->c)
。我认为你在决定你想要什么结果时犯了一个错误。@DanielFischer事实上,我现在决定在stacks Three的帮助下得到我想要的结果,谢谢你通读我的文章