fork download
  1. data LinkedTree a
  2. = EmptyTree
  3. | Node a (LinkedTree a) (LinkedTree a) (LinkedTree a)
  4.  
  5. root = Node 1 l r EmptyTree
  6. where
  7. l = Node 2 EmptyTree EmptyTree root
  8. r = Node 3 EmptyTree EmptyTree root
  9.  
  10. instance Show a => Show (LinkedTree a) where
  11. show EmptyTree = "{}"
  12. show (Node x EmptyTree EmptyTree _) = "{" ++ show x ++ "}"
  13. show (Node x l r _) = "{" ++ show x ++ " " ++ show l ++ " " ++ show r ++ "}"
  14.  
  15. left (Node _ l _ _) = l
  16. right (Node _ _ r _) = r
  17. parent (Node _ _ _ p) = p
  18.  
  19. main = do
  20. print root
  21. let rootLeft = left root
  22. print rootLeft
  23. print $ parent rootLeft
  24.  
Success #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
{1 {2} {3}}
{2}
{1 {2} {3}}