哪些OCaml库可用于惰性列表处理?

时间:2009-09-10 06:21:16

标签: ocaml backtracking lazylist

哪些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类型和语法糖的集成将会很不错。

2 个答案:

答案 0 :(得分:6)

Ocaml Batterieslazy list module,请查看to_stream功能。至于回溯,你可以查看camlp4的流解析器,因为你有一个Stream.t。

答案 1 :(得分:2)

此外,我的OCaml Network Application Environment核心基金会中有一个名为Cf_seq的惰性列表模块。事实上,我写了一整套功能数据结构。这些都是根据2条款BSD许可证提供的。享受。

更新:代码已重命名为“Oni”,现在它已在BitBucket上托管。您也可以使用GODI包。