はで私のmap関数です:のOCaml - Lazy.force
type 'a stream = Cons of 'a * 'a stream Lazy.t
let rec ones = Cons(1, lazy(ones));;
let rec map (f:'a -> 'b) (s:'a stream) : 'b stream =
match s with
|Cons(h,t) -> Cons(f h, lazy (map f (Lazy.force t)));;
;;
正しいですか? Lazyはそれが既にそれをメモに記入されるようにするだろうか?
'type 'の2番目の間接指定の目的は何ですか?a unit =' a susp ref '? 'fun() - > r'または' 'let s = f()in''を適用するだけです。なぜあなたは仲買人を切り取ることができないのですか? PS:明確にするために、私はhttp://ideone.com/Eidm34がうまくいかない理由を尋ねています。 –
合意。それは不要です。 ''a t = 'susp susp ref'とタイプする必要があります。インダイレクションは以前の試みからの痕跡です:) – seanmcl