要求我为以下二进制树实现一个函数:
data BinaryTree a = Nil | BNode a (BinaryTree a) (BinaryTree a)
我需要实现的功能应该产生a
的完整,对称,无限的二叉树,并且应该具有签名:
infTree :: a -> BinaryTree a
我该如何实施?
答案 0 :(得分:7)
您可以在两个子节点都是父节点的地方创建循环引用。
infTree :: a -> BinaryTree a
infTree x = tree
where
tree = BNode x tree tree
这与实现repeat
函数的方式相同:
repeat :: a -> [a]
repeat x = xs where xs = x : xs