Een wiskundige expressie in Haskell kunnen we voorstellen met behulp van data:
data Exp = Zero
| One
| Const Int
| Plus (Exp r) (Exp r)
| Mult (Exp r) (Exp r)
Programmeren we in Continuation Passing Style, schrijven we dit als volgt:
data Exp r = Exp (r
-> r
-> (Int -> r)
-> (Exp r -> Exp r -> r)
-> (Exp r -> Exp r -> r)
-> r)
Implementeer de gevraagde functies met behulp van dit datatype. Voor enkele is het type al gegeven, anders schrijf je dit zelf.