3
我正在阅读一些笔记,我意识到有什么是不对的。sml中懒惰的尾巴
当模拟延迟计算(没有open Lazy;
)时,可以为一个流执行以下操作。
datatype 'a susp = Susp of (unit -> 'a)
datatype 'a stream' = Cons of 'a * ('a stream') susp
type 'a stream = ('a stream') susp
fun delay (f) = Susp(f);
fun force (Susp(f)) = f();
val rec ones' = fn() => Cons(1, delay(ones'));
val ones = delay(ones')
fun ltail(Susp(s)) = ltail'(force s)
and ltail' (Cons(x,s)) = s
但是对于获得悬挂尾巴的类型不匹配。
operator domain: 'Z susp
operand: unit -> 'Y
需要改变ltail的正确类型? 我知道尾巴没有挂起会发生什么。 我只是想弄清楚这些笔记对暂停版本所说的话。
有趣的语言。从来没有听说过。 NJ从什么时候开始获得他们自己的语言,德克萨斯不是? :P –