我是新手。我写下面的代码。
Delay(e) == fn () => e
Force(e) == e()
fun time_consuming(n) =
let fun tak(x, y, z) = if x <= y then y
else tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y))
in
fun tak(3*n, 2*n, n)
funend;
fun fib(n) = if n=0 orelse n=1 then 1 else fib(n-1) + fib(n-2);
fun odd(n) = (n mod 2) = 1;
fun f(x, y) = if odd(x) then 1 else fib(y);
f(fib(9), time_consuming(9));
fun lazy_f(x, y) = if odd(x) then 1 else fib(y());
lazy_f(fib(9), fn () => (time_consuming(9)));
这是懒惰的评估代码。
但它有一些错误。
lazy.sml:1.13 错误:语法错误:插入 LPAREN
lazy.sml:4.2 错误:语法错误:插入 LET
lazy.sml:12.44 错误:语法错误:用 EQUALOP 替换分号
lazy.sml:15.21 错误:语法错误:插入 LPAREN
lazy.sml:17.1 错误:在 EOF 发现语法错误
这些错误是什么意思?