Files
cs-252/lab06/functors.lhs
2026-03-03 14:32:22 -08:00

25 lines
680 B
Plaintext

> data Tree v =
> Empty
> | Node v (Tree v) (Tree v)
> deriving (Show)
> instance Functor Tree where
> fmap f (Node v left right) = Node (f v) (fmap f left) (fmap f right)
> fmap f Empty = Empty
The findT method shows how we may search through the tree to find a value.
> findT :: Ord v => v -> Tree v -> Maybe v
> findT _ Empty = Nothing
> findT v (Node val left right) =
> if val == v then
> Just val
> else if v < val then
> findT v left
> else
> findT v right
Your job is to add support for fmap to this tree, so that the call to fmap below works:
> main = print $ fmap (+1) (Node 3 (Node 1 Empty Empty) (Node 7 (Node 4 Empty Empty) Empty))