-- | Determine if a natural number is even.
--
--   Unsafe for Fractional data types if typed
--     even' :: (Eq t, Num t) => t -> Bool
--   Also, the name "even" collides with the one from the
--   Integral typeclass imported from Prelude. 

even' :: NaturalNumber -> Bool
even' n
    | n == 0 = True
    | n == 1 = False
    | otherwise = even' $ n-2
even' :: NaturalNumber -> Bool
even' n
    | n == 0 = True
    | n == 1 = False
    | otherwise = even' $ n-2
even' n
    | n == 0 = True
    | n == 1 = False
    | otherwise = even' $ n-2