7 let factorial (n: int) { n >= 0 } (return (m: int) { m = fact n })
9 [ loop (r: int) (k: int) =
11 { r * fact k = fact n }
12 (! if {k > 0} (-> loop {r * k} {k - 1})
15 let test (n: int) {} (o (m: int) { m = fact n })
16 = if {n >= 0 } (-> factorial {n} o)