Import Upstream version 20180207
[hcoop/debian/mlton.git] / benchmark / tests / DATA / hamlet-input.sml
CommitLineData
7f918cf1
CE
1datatype t = Z | S of t;
2val zero = Z;
3val one = S zero;
4val two = S one;
5val rec add: t * t -> t = fn (Z, n) => n | (S m, n) => S (add (m, n));
6val rec mul: t * t -> t = fn (Z, n) => Z | (S z, n) => add (n, mul (z, n));
7val four = mul (two, two);
8val rec exp: t * t -> t = fn (n, Z) => one | (n, S m) => mul (n, exp (n, m));
9val _ = exp (exp (four, four), two);