lseq
関数をどのように呼び出して永遠に実行できるのか分かりません。ocamlでの遅延評価
type 'a llist = LazyList of 'a * (unit -> 'a llist)
let rec lseq nr =
LazyList (nr, fun() -> lseq (nr+1))
私は
lseq 5
呼び出す場合、私はlseq
への各呼び出しはタイプ'a llist
の新しい値を作成します
int llist = LazyList (5, <fun>)
「あなたは永遠に実行されませんか?あるいは、なぜ、 'lseq'関数の呼び出しが終了するのですか?という質問を言い換えてみましょう。それはあなたが尋ねたいものですか? – ivg
私がlseq 5を呼び出すと、int llist = LazyList(5、)が終了しましたか? –
Oleg