module BinaryTree where

data BinaryTree a
  = Empty
  | Node a (BinaryTree a) (BinaryTree a)
      deriving (Show)

instance Foldable BinaryTree where
  foldr :: (a -> b -> b) -> b -> BinaryTree a -> b
  foldr f acc Empty = acc
  foldr f acc (Node x left right) =
    foldr f (f x (foldr f acc right)) left
