In ML...
datatype 'a tlv = S of 'a | D of exp
val I = (* int tlv typ *)
RR(fn D(e) => e
| S(i) => Int(i),
fn e => D(e))
fun add' (S(i), S(j)) = S(i + j)
| add' (x, y) = D(Add(reify I x, reify I y))
- reify (I-->I)
(fn n => add'(add'(S(1), S(2)), n));
> val it = Abs ("x1",Add (Int 3,Var "x1")) : exp
Previous slide
Next slide
Back to first slide
View graphic version