0
以下代码序列在输入|
上生成解析错误。 如果输入当时的叶节点调用leafFunc与价值 如果输入当时的树节点调用TreeFunc与左子树,值,右子树在haskell中生成解析输入错误
data Tree t = Leaf t
| Node (Tree t) t (Tree t)
foldTree :: (t1 -> t -> t1 -> t1) -> (t -> t1) -> Tree t -> t1
foldTree treeFn leafFn tree= | foldTree (Leaf v) = leafFn(v)
| foldTree (Node left v right) = treeFn(left v right)
Input : foldTree (\t1 t t2->t1 + 5*t + t2) (\x->x+9) (Leaf 5)
Expected Output : 14
Input : foldTree (\t1 t t2->t1 + 3*t + t2) (\x->x+5) (Tree (Leaf 3) 2 (Leaf 4))
Expected Output : 23
我在Haskell一个新手。
解析错误结果所形成的格式不正确警惕声明。在'|'之前不应该放一个等号。之后还有其他一些事情需要处理,包括在警卫中应用foldTree和正确数量的参数。 – mnoronha
我想在“=”之后进行模式匹配。我怎样才能做到这一点 ? :) TIA –
你很混淆函数/保护语法。在警卫的右侧,包括谓词(评估为“真”或“假”的函数)和相应的值赋值。如果您想要模式匹配不同的案例(叶节点与节点),您可以使用case语句或手动将几个案例与函数声明进行匹配。我建议你阅读这个:http://learnyouahaskell.com/syntax-in-functions – mnoronha