What OCaml libraries are there for lazy list handl

2019-07-07 05:08发布

What OCaml libraries are out there that provide lazy list handling? I am looking for something along these lines:

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

Integration with the Stream type and syntactic sugar for backtracking Camlp4 parsers would be nice.

2条回答
Explosion°爆炸
2楼-- · 2019-07-07 05:59

Also, there is a lazy list module called Cf_seq in my OCaml Network Application Environment Core Foundation. In fact, I wrote a whole passle of functional data structures. It's all available under a 2-clause BSD license. Enjoy.

Update: the code has been renamed "Oni" and it's now hosted at BitBucket. You can also use the GODI package for it.

查看更多
时光不老,我们不散
3楼-- · 2019-07-07 06:07

Ocaml Batteries has a lazy list module, check out the to_stream function. As for backtracking, you can look into camlp4's stream parsers now that you have a Stream.t .

查看更多
登录 后发表回答