"); //-->
VM600 IOC4T 依赖类型可以在高阶逻辑
VM600 IOC4T 依赖类型可以在高阶逻辑
特别是自从发展了辛德雷-米尔纳型推理在20世纪70年代,函数式编程语言倾向于使用类型化λ演算,在编译时拒绝所有无效的程序,并冒着假阳性误差,而不是无类型lambda演算,它在编译时接受所有有效的程序并承担风险假阴性误差,用于Lisp及其变体(如计划),因为当信息足以不拒绝有效程序时,它们在运行时拒绝所有无效程序。的使用代数数据类型使复杂数据结构的操作变得方便;强编译时类型检查的出现使得程序在没有其他可靠性技术的情况下更加可靠,例如测试驱动开发,而类型推理在大多数情况下,程序员无需向编译器手动声明类型。
一些面向研究的函数式语言,如Coq,Agda,红辣椒粉,以及警句是基于直觉类型理论,这使得类型依赖于术语。这种类型被称为从属类型。这些类型系统没有可判定的类型推理,难以理解和编程。[67][68][69][70]但是依赖类型可以在高阶逻辑。穿过库里-霍华德同构那么,用这些语言编写的类型良好的程序就成了编写正式的数学证明编译器可以从中生成认证代码。虽然这些语言主要在学术研究(包括形式化数学),它们也开始在工程中使用。Compcert是一个编译程序对于的子集c编程语言这是用Coq写的,并经过正式验证。[71]
依赖类型的有限形式称为广义代数数据类型(GADT的)可以以一种方式实现,提供依赖类型编程的一些好处,同时避免它的大部分不便。[72]GADT在美国有售格拉斯哥哈斯克尔编译器,在OCaml[73]而在斯卡拉,[74]并且已经被提议作为包括Java和C#在内的其他语言的补充。[75]
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。