Concoqtion(Coq + MetaOCaml) - 为何放弃?

时间:2013-04-17 19:41:27

标签: types ocaml coq metaocaml

在OCaml邮件列表上找人之前,我想我可能会在这里发布我的问题。我刚刚发现了这个beauty(链接到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?

1 个答案:

答案 0 :(得分:14)

在计算机科学研究期间编写的大多数软件都是一个原型,它不是为了使文章的科学观点得到进一步发展,验证你的方法。一些例外最终会被维持很长一段时间并过着复杂的生活,成为人们依赖的东西(OCaml就是这样一个例子),但这既是一种祝福,也是一种诅咒。

我从未想过Concoqtion是为了立即采用,而是作为一个概念证明,你可以整合编程并证明“现在!”。从“采用”的角度来看,MetaOcaml已经是在OCaml上添加的很少使用的补丁,在混合物中添加Coq(不是轻量级也不是用于嵌入)会给你一个相当脆弱的系统的合理承诺。地狱要坚持很长时间。

我不会说Concoqtion被“放弃”,而不是它教给我们一个教训,但并不意味着实际使用。研究人员继续在该领域工作,许多系统可以被描述为这项工作的后代(或至少重用一些想法),例如VeriML

当然,我说这是一个局外人。很难猜出作者的意图是什么。此外,研究界的原型/产品往往存在模糊关系:你通常认为没有人会采用你的实验软件,但也许,某些人实际上可能会有一点希望。作者本身对于他们是否打算将其开发作为一个抛弃原型,或者积极期望用户参与而言通常是相当矛盾的(你通常不会写“我们故意偷工减料并且黑客攻击丑陋以使其在“在您的论文或您的网页上”的论文的几个例子。有些人设计的是非常可靠的软件,但却从未被采用(帽子提示Alice ML),有些人会开发出被其他人使用的片状原型(没有例子),你永远不会知道。