×

细化交集和并集类型。 (英语) Zbl 1297.68049号

摘要:设计和实现类型化编程语言很困难。每一个新类型的系统特性都需要扩展元理论和实现,而这往往是复杂和脆弱的。为了简化这个过程,我们想提供包含许多不同功能的通用机制。在现代类型系统中,参数多态性是基本的,但交集多态性在编程语言中几乎没有吸引力。大多数实际的交集类型系统只支持细化交集,这增加了类型的表达能力(可以检查更精确的属性),而不会改变术语的表达能力;精化交集可以在编译期间简单地删除。相比之下,无限制交集增加了术语的表达能力,并可用于编码不同的语言特征,有望实现理论和实现的经济性。我们描述了编译无限制交集和并集类型的基础:生成普通(lambda)演算术语的精化类型系统。关键特性是类似Forsythe的合并构造。使用这种构造,并不是所有源程序的约简都保留类型;然而,我们证明了精心编制的程序的普通调用值评估对应于源程序的类型保护评估。我们还描述了无限制交集和并集的原型实现和应用:记录、运算符重载和模拟动态类型。

MSC公司:

68甲18 函数编程和lambda演算

软件:

福赛特
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] 程序设计语言原理第395页–(2008)·Zbl 1193.68066号
[2] 程序设计语言原理第60页–(1989)
[3] 程序设计语言原理(1989)
[4] 致H.B.Curry:《关于组合逻辑、Lambda微积分和形式主义的论文》第561页(1980年)
[5] Gerhard Gentzen论文集第68页–(1969)·兹比尔0209.30001
[6] J.ACM 55第1页–(2008年)
[7] 编程语言设计与实现第268页–(1991)
[8] 程序设计语言原理第281页–(2004)
[9] 编程语言符合程序验证(PLPV’07)第21页–(2007)
[10] DOI:10.1002/malq.19810270205·Zbl 0479.03006号 ·doi:10.1002/malq.19810270205
[11] 内政部:10.1006/inco.1995.1033·Zbl 0819.03005号 ·doi:10.1006/inco.1995.1033
[12] 编程语言设计与实现第278页–(1991)
[13] DOI:10.1007/BF01018828·Zbl 05478828号 ·doi:10.1007/BF01018828
[14] 内政部:10.2307/2273659·Zbl 0545.03004号 ·doi:10.2307/2273659
[15] 内政部:10.1006/inco.1995.1086·Zbl 0832.68065号 ·doi:10.1006/inco.1995.1086
[16] 程序设计语言原理第163页–(1994)
[17] 内政部:10.1145/345099.345100·Zbl 01935173号 ·doi:10.1145/345099.345100
[18] 标准ML的定义(修订版)(1997年)
[19] 内政部:10.1016/S0019-9958(86)80019-5·Zbl 0636.68016号 ·doi:10.1016/S0019-9958(86)80019-5
[20] 数学逻辑方法第208页–(1985)
[21] DOI:10.1016/j.tcs.2003.10.32·兹比尔1070.68021 ·doi:10.1016/j.tcs.2003.10.32
[22] 内政部:10.1007/BF01211394·Zbl 0774.03002号 ·doi:10.1007/BF01211394
[23] 西奥。计算。科学。第28页,第235页–(1984年)
[24] J.功能。程序。第12页,183页–(2002年)
[25] 计算机软件的理论方面pp 675–(1991)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。