有哪些 OCaml 库用于惰性列表处理?
Posted
技术标签:
【中文标题】有哪些 OCaml 库用于惰性列表处理?【英文标题】:What OCaml libraries are there for lazy list handling? 【发布时间】:2009-09-10 06:21:16 【问题描述】:有哪些提供惰性列表处理的 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
与Stream
类型和回溯Camlp4 解析器的语法糖集成会很好。
【问题讨论】:
Lazy.t
应该被使用而不是lazy_t
【参考方案1】:
Ocaml Batteries 有一个lazy list module,查看to_stream
函数。至于回溯,既然你有一个 Stream.t ,你就可以查看camlp4的流解析器。
【讨论】:
谢谢,懒人列表模块很方便。不确定流解析器,因为它们不会回溯。但我会从这里弄清楚。 嗯,camlp4 不回溯?也许我在考虑camlp5?其中之一(或两者)通过延续回溯...... 啊,是的,这似乎是 camlp5。谢谢! pauillac.inria.fr/~ddr/camlp5/doc/htmlc/bparsers.html 电池库现在有three different more or less lazy sequence types,具有不同的属性。【参考方案2】:另外,在我的OCaml Network Application Environment Core Foundation 中有一个名为Cf_seq
的惰性列表模块。事实上,我写了一整套函数式数据结构。这一切都在 2 条款 BSD 许可下可用。享受吧。
更新:代码已重命名为“Oni”,现在托管在 BitBucket 上。您也可以使用GODI 包。
【讨论】:
以上是关于有哪些 OCaml 库用于惰性列表处理?的主要内容,如果未能解决你的问题,请参考以下文章