File: hamlet-input.sml

package info (click to toggle)
mlton 20100608-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 34,980 kB
  • ctags: 69,089
  • sloc: ansic: 18,421; lisp: 2,879; makefile: 1,570; sh: 1,325; pascal: 256; asm: 97
file content (9 lines) | stat: -rw-r--r-- 363 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
datatype t = Z | S of t;
val zero = Z;
val one = S zero;
val two = S one;
val rec add: t * t -> t = fn (Z, n) => n | (S m, n) => S (add (m, n));
val rec mul: t * t -> t = fn (Z, n) => Z | (S z, n) => add (n, mul (z, n));
val four = mul (two, two);
val rec exp: t * t -> t = fn (n, Z) => one | (n, S m) => mul (n, exp (n, m));
val _ = exp (exp (four, four), two);