-- | Peano numbers without any extra fluff module Data.Peano ( Peano(..) , plus , times , infinity ) where data Peano = Zero | Succ Peano deriving (Show, Read, Eq, Ord) plus :: Peano -> Peano -> Peano plus Zero m = m plus (Succ n) m = Succ (plus n m) times :: Peano -> Peano -> Peano times _ Zero = Zero times n (Succ m) = plus n (times n m) infinity :: Peano infinity = Succ infinity