私はいくつかのノートを通過していたと私は何かが間違っていることに気づいた。smlでレイジーなサスペンド
遅延計算をエミュレートする場合(open Lazy;
なし)は、1のストリームに対して以下を実行できます。
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 –