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 –