【发布时间】:2011-06-12 21:46:05
【问题描述】:
我是新手。我写下面的代码。
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 处发现语法错误
这些错误是什么意思?
【问题讨论】: