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.