Haskell从两个列表中绘制函数参数

铆接

我正在尝试为树实现一种zip功能。对于此示例,每个树节点都有一个整数值(Label),一个转换函数(Label-> Label)和一个子树列表[Tree]。

tzp(tree-zip)方法采用两棵树,并根据某些条件将它们的值相加。这是问题:

如何获取函数以递归方式获取每个[Tree] -List的下一个子树?

我目前的实施方式,以防您好奇

tzp :: (Label -> Label -> Label) -> Tree -> Tree -> Tree
tzp arithmeticF t1 t2 = if ((getNodeValue t1) == (getNodeValue t2)) then (Node (arithmeticF (getNodeValue t1)) ((getNodeFunction t1) . (getNodeFunction t2) (getNodeValue t1)) (map (tzp arithmeticF) (getSubTrees t1) (getSubTrees t2)))

罪魁祸首是这部分:

(map (tzp arithmeticF) (getSubTrees t1) (getSubTrees t2))

由于地图无法使用two列表。准确地说,我必须将该函数应用于任一列表的第n个元素。所以首先是第一,第二是第二,依此类推。

任何帮助是极大的赞赏!

utdemir
Prelude> :t uncurry
uncurry :: (a -> b -> c) -> (a, b) -> c
Prelude> :t (+)
(+) :: Num a => a -> a -> a
Prelude> :t uncurry (+)
uncurry (+) :: Num c => (c, c) -> c

因此,类似:

map (uncurry tzp arithmeticF) (zip (getSubTrees t1) (getSubTrees t2))

应该做的把戏。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章