3

遅延リスト処理を提供する OCaml ライブラリは何ですか? 私はこれらの行に沿って何かを探しています:

type 'a lazy_list = (*'*)
  | Nil
  | Cons of 'a * 'a lazy_list lazy_t

let from f = 
  let rec gen n = 
    lazy 
      (
        match f n with 
          | Some x ->
              Cons (x, gen (n + 1))
          | None ->
              Nil
      )
  in 
    gen 0

Camlp4 パーサーをバックトラッキングStreamするための型とシンタックス シュガーとの統合は素晴らしいでしょう。

4

2 に答える 2

6

Ocaml Batteriesにはlazy list モジュールがあります。機能を確認してくださいto_stream。バックトラックに関しては、 Stream.t ができたので、camlp4 のストリーム パーサーを調べることができます。

于 2009-09-10T15:51:24.737 に答える
2

Cf_seqまた、私のOCaml Network Application Environment Core Foundationで呼び出される遅延リスト モジュールがあります。実際、関数型データ構造のパス全体を書きました。これはすべて、2 条項 BSD ライセンスの下で利用できます。楽しみ。

更新: コードの名前が「Oni」に変更され、現在 BitBucket でホストされています。GODIパッケージを使用することもできます。

于 2009-10-27T21:03:51.390 に答える