El tipo de los números naturales
El tipo de los números raturales se puede definir por
data Nat = Cero | Suc Nat deriving (Show, Eq)
de forma que Suc (Suc (Suc Cero))
representa el número 3.
Definir las siguientes funciones
nat2int :: Nat -> Int int2nat :: Int -> Nat suma :: Nat -> Nat -> Nat
tales que
-
nat2int n
es el número entero correspondiente al número naturaln
. Por ejemplo,
nat2int (Suc (Suc (Suc Cero))) == 3
-
int2nat n
es el número natural correspondiente al número enteron
. Por ejemplo,
int2nat 3 == Suc (Suc (Suc Cero))
-
suma m n
es la suma de los número naturalesm
yn
. Por ejemplo,
λ> suma (Suc (Suc Cero)) (Suc Cero) Suc (Suc (Suc Cero)) λ> nat2int (suma (Suc (Suc Cero)) (Suc Cero)) 3 λ> nat2int (suma (int2nat 2) (int2nat 1)) 3