Имеется тип
data Tree a = Nil | Branch (Tree a) a (Tree a)
Написать функцию
elemTree :: Eq a => a -> Tree a -> Bool
проверяющую наличие значения в дереве.
Первая приходящая в голову реализация не проходит следующий тест:
> let testTree n = Branch (testTree n) n (testTree (n+1))
> 3 `elemTree` (testTree 1)
True
Код теста специально сливается с
(
Read more... )
elemTree a t = or [x==a | Branch _ x _ <- b] where b = t:[x | Branch l _ r <- b, x <- [l,r]]
:)
Reply
Reply
Reply
Reply
Проверь на elemTree 1 Nil, например.
Reply
Leave a comment