Haskell — Peano

Definim els nombres de naturals de la forma següent:

        data Nat = Z | S Nat deriving Show

A més, definim la funció genèrica d’ordre superior següent:

        rec :: a -> (Nat -> a -> a) -> Nat -> a
        rec base step Z = base 
        rec base step (S n) = step n (rec base step n)

Definiu les les funcions següents, tenint en compte que només podeu
substituir els undefined per expressions no recursives i que no podeu
usar operacions dels enters.

        isEven :: Nat -> Bool       -- indica si un natural és parell o no
        isEven = rec base step
            where 
                base = undefined
                step = undefined

        add :: Nat -> Nat -> Nat    -- retorna la suma de dos naturals
        add = rec base step 
            where 
                base = undefined
                step = undefined

        mul :: Nat -> Nat -> Nat   -- retorna el producte de dos naturals
        mul = rec base step 
            where 
                base = undefined
                step = undefined

        fact :: Nat -> Nat          -- retorna el factorial d'un natural
        fact = rec base step 
            where 
                base = undefined
                step = undefined

Observacions

Descarregueu-vos el fitxer code.hs i completeu-lo.

mul pot usar add i fact pot usar mul.

El Jutge dóna puntuacions parcials per a cada funció (20 punts) i per
l’exemple (20 punts).

A l’hora de corregir es tindrà en compte la correcció, la consició, la
senzillesa, l’elegància de la solució proposada, però no l’eficiència.

Informació del problema

Autoria: Jordi Petit

Generació: 2026-02-03T17:05:38.398Z

© Jutge.org, 2006–2026.
https://jutge.org
