Tijdens het hoorcollege hebben we gezien dat in de lambda calculus functies gebruikt kunnen worden om booleans en nummers voor te stellen. Ook in Haskell kan je lambda expressies schrijven, de identiteitsfunctie “\lambda x.x” schrijf je bijvoorbeeld in Haskell als volgt:
id = \x -> x
Hieronder staat de implementatie van de eerste drie Church getallen in
Haskell. Ook is er een functie getNum
gedefinieerd die een Church
getal omzet naar een Haskell nummer.
zero = \f -> \x -> x
one = \f -> \x -> f x
two = \f -> \x -> f (f x)
getNum church = church (\x -> x + 1) 0
Gegeven deze definities schrijf de volgende functies:
increment
: Tel 1 op bij een gegeven Church getal.
numToChurch
: Zet een nummer om naar zijn Church representatie.
add
: Tel twee Church getallen bij elkaar op.
mul
: Vermenigvuldig twee Church getallen.