implementation module Map //import BinTree import StdMaybe import StdList class Map c :: (a -> b) (c a) -> c b instance Map [] where Map f [] = [] Map f [x:xs] = [f x: Map f xs] instance Map Maybe where Map f Nothing = Nothing Map f (Just x) = Just (f x) //instance Map Tree where // Map f Leaf = Leaf // Map f (Node x l r) = Node (f x) (mapTree f l) (mapTree f r)