Functional Programming & Proofs

back

Answers

let f(x)=1+x in f(2)
= let f=(fun x->x+1) in (f 2)
= (fun f->(f 2)) (fun x->x+1)
= (f 2)[f/fun x->x+1]
= (fun x->x+1) 2
= (x+1)[x/2]
= 2+1
= 3
let f(x)=1+x in let g(x)=2*x in f(g(2))
= f(g 2)[f/fun x->1+x;g/fun x->2*x]
= (fun x->1+x) ((fun x->2*x) 2)
=  (fun x->1+x) (2*x [x/2])
= (fun x->1+x) 4
= 1+x[x/4]
= 1+4
= 5