跳到主要内容

可重用性和依赖类型

2009年10月1日至2013年3月31日

罗宾·米尔纳(Robin Milner)创造了“类型良好的程序不会出错”的口号,宣传类型化函数式语言的优势像ML和Haskell一样,使用类型捕获运行时错误。如今,我们可以而且想走得更远:依赖类型编程利用表现力强的类型系统的强大功能,为软件提供更强的保证,同时也提供额外的支持开发,使用类型来指导开发过程。最近,语言提案激增利用依赖类型的能力的目标,例如具有GADT的Haskell、Agda、Coq、Omega、Concoqtion、Guru、Ynot、Epigram等等。

然而,表达型系统也有其代价:更具体的类型常常会降低代码的可重用性特定于工具的实现类型可能不适合其当前应用程序。这种现象已经在传统的ML和Haskell的Hindley-Milner型系统;它在依赖类型的设置中变得更加普遍。幸运的是,所有的东西都没有丢失:依赖类型具有足够的表达能力,可以反思地谈论自己,从而进行元编程它的潜在杀手级应用之一,有可能将表现型和可重用软件组件结合起来。

基于诺丁汉大学最近关于独立类型编程(EPSRC)的研究并受到其启发EP/C512022/1号机组)和集装箱类型(EPSRC欧洲药典/C511964/2)在牛津大学关于数据类型通用编程(EPSRCGR/S27078/01号,EP/E02128X/1型)我们计划探索依赖类型的潜力,以交付可重用和可靠的软件组件。为此,我们打算探索两种替代方法——通过结构重用和通过设计重用,并在一个独立的类型化框架。我们的计划是构建扩展Epigram 2框架的新工具,研究基础理论使用容器类型,最重要的是建立新的编程模式和库。

选定出版物

查看全部

首席研究员

乔什·科
马西耶·皮罗格

分享这个: