Types 调制(Coq+;MetaOCaml)-为什么要放弃?

Types 调制(Coq+;MetaOCaml)-为什么要放弃?,types,ocaml,coq,metaocaml,Types,Ocaml,Coq,Metaocaml,在对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

在对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是否有类似的东西吗?

在计算机科学研究期间编写的大多数软件都是一个原型,它的开发没有超出文章的科学观点,验证了您的方法。有些例外情况会持续很长一段时间,过着复杂的生活,成为人们依赖的东西(OCaml就是这样一个例子),但这既是福也是祸

我从未想过Concoqtion是为了立即采用,而是为了证明您可以集成编程和证明“现在”的概念。从“采用”的角度来看,MetaOcaml已经是一个在OCaml之上很少使用的补丁,在混合中添加Coq(既不是轻量级的,也不是为嵌入而设计的)可以合理地保证一个相当脆弱的系统,在很长一段时间内很难维护

我不会说Concoqtion被“抛弃”,而是说它给了我们一个教训,但它并不意味着真正被使用。研究人员一直在这一领域工作,例如,许多系统可以被描述为这项工作的后代(或者至少重用了其中的一些思想)


当然,我是作为一个局外人说的。很难猜测作者的意图是什么。此外,在研究界,原型/产品之间往往存在一种模棱两可的关系:你通常认为没有人会采用你的实验软件,但也许,也许有些人真的有一点希望。作者们自己通常对他们的开发是作为一个一次性原型,还是积极期望用户参与(你通常不会在你的论文或网页上写“我们故意抄近路,砍掉难看的狗屎,让它在论文的几个例子上几乎无法工作”)持矛盾态度。有些人设计了真正可靠的软件,但从未被采用(帽子提示),有些人开发了供其他人使用的片状原型(没有示例),你永远不知道。

因为MetaOCaml在基于OCaml 4.00.1的BER MetaOCaml之前没有移植到更高的OCaml版本。我忘记了细节,但MetaOCaml需要对OCaml进行一些内部更改,以便于维护。