小さなテストプログラムのメモリ使用量をテストしたかったのです。プログラムは次のようになります。 import Data.List as L
main :: IO
main = print $ L.find (==100000) [1..1000000000]
100000番目の値が見つかりました。私はこのプログラムが100000の値のメモリしか使用しないことを期待しました。 +RTS -h
lseq関数をどのように呼び出して永遠に実行できるのか分かりません。 type 'a llist = LazyList of 'a * (unit -> 'a llist)
let rec lseq nr =
LazyList (nr, fun() -> lseq (nr+1))
私は lseq 5
呼び出す場合、私はlseqへの各呼び出しはタイプ'a llistの新しい値を作
私の関数がその型について不平を言うのはなぜですか? 私のxはtype 'a seqではありませんか? type 'a seq = Stop | Cons of 'a * (unit -> 'a seq)
let rec linear start step= (*builds a seq starting with 'start'*)
Cons (start, fun() -> lin