在对 OCaml 邮件列表上的人进行窃听之前,我想我可以在这里发布我的问题。我刚刚发现了这种美(链接到 Concoqtion 网站)。Concoqtion 是 MetaOCaml 的扩展,它允许索引类型(也许更多)。有了它,很容易创建类型还包括列表长度的列表:
type ('n:'(nat),'a) listl =
| Nil : ('(0),'a) listl
| Cons of let 'm:'(nat) in 'a * ('(m),'a) listl : ('(m+1),'a) listl
这(m+1)
是在类型级别上完成的。很整齐。
但是,最后一个版本是 2007 年的(OCaml 3.08)。有谁知道为什么这个项目被取消了,或者今天 OCaml 是否有类似的东西?