Peano-0.0.3: Data/Peano.hs
-- | 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 (Succ n) m = plus n (times n m)
infinity :: Peano
infinity = Succ infinity