25 lines
366 B
Plaintext
25 lines
366 B
Plaintext
(* ****** ****** *)
|
|
//
|
|
#include "share/atspre_staload.hats"
|
|
//
|
|
(* ****** ****** *)
|
|
//
|
|
fun
|
|
myfix
|
|
{a:type}
|
|
(
|
|
f: lazy(a) -<cloref1> a
|
|
) : lazy(a) = $delay(f(myfix(f)))
|
|
//
|
|
val
|
|
fact =
|
|
myfix{int-<cloref1>int}
|
|
(
|
|
lam(ff) => lam(x) => if x > 0 then x * !ff(x-1) else 1
|
|
)
|
|
(* ****** ****** *)
|
|
//
|
|
implement main0 () = println! ("fact(10) = ", !fact(10))
|
|
//
|
|
(* ****** ****** *)
|