相关疑难解决方法(0)

Haskell Tree to List - preorder遍历

给出Haskell中的以下树结构:

data Tree = Leaf Int | Node Int Tree Tree deriving Show
Run Code Online (Sandbox Code Playgroud)

如何让Haskell返回预订中的数据列表?

例如给一棵树:

Node 1 (Leaf 2) (Leaf 3)
Run Code Online (Sandbox Code Playgroud)

返回类似的东西:

preorder = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

tree haskell tree-traversal

4
推荐指数
1
解决办法
4442
查看次数

我想用标准 ML 制作函数映射树

我想用标准 ML 制作函数映射树。如果函数 f(x) = x + 1; 然后

maptree(f, NODE(NODE(LEAF 1,LEAF 2),LEAF 3));
Run Code Online (Sandbox Code Playgroud)

应该做出结果

NODE(NODE(LEAF 2,LEAF 3),LEAF 4))
Run Code Online (Sandbox Code Playgroud)

我写的代码如下。

datatype 'a tree = LEAF of 'a | NODE of 'a tree * 'a tree;
fun f(x) = x + 1;
fun maptree(f, NODE(X, Y)) = NODE(maptree(f, X), maptree(f, Y))
| maptree(f, LEAF(X)) = LEAF(f X);
Run Code Online (Sandbox Code Playgroud)

但是当我像这样执行这段代码时

maptree(f, (NODE(NODE(LEAF 1,LEAF 2),LEAF 3)));
Run Code Online (Sandbox Code Playgroud)

结果不是我想要 (NODE(NODE(LEAF 2,LEAF 3),LEAF 4))) 而是 NODE(NODE(LEAF #,LEAF #),LEAF 4))。为什么会发生这种情况(不是数字而是#)?

sml smlnj

4
推荐指数
1
解决办法
830
查看次数

标签 统计

haskell ×1

sml ×1

smlnj ×1

tree ×1

tree-traversal ×1