×

将多态编译为动态类型的正确性。 (英语) Zbl 1420.68056号

摘要:多态性和动态分型之间的联系最初是由H.B.咖喱等。[组合逻辑。第二卷。阿姆斯特丹-朗登:北霍兰德出版公司(1972;Zbl 0242.02029)]以非类型化{\(\lambda\)}-术语的“多态类型赋值”的形式。类型是根据事实分配给现代术语中的动态语言。以下提案重新激发了人们对类型分配的兴趣G.布拉查等。[“让未来成为过去的安全:为Java编程语言添加泛型”,摘自:第13届ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集,OOPSLA’98。纽约州纽约市:计算机机械协会(ACM)。183–200 (1998;数字对象标识代码:10.1145/286936.286957)]和J.A.银行,A.C.迈尔斯B.利斯科夫[“Java的参数化类型”,摘自:第24届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集,POPL’97。纽约州纽约市:计算机机械协会(ACM)。132–145 (1997;数字对象标识代码:10.1145/263699.263714)]用多态性(泛型)丰富Java,这反过来又引发了其他语言的开发,如Scala,这些语言具有类似的功能组合。在这种情况下,如果目标语言已经具有单态类型系统,那么最好将多态性编译为动态类型,这样可以尽可能多地保留静态类型,只在实际需要泛型时才依赖于动态。基本方法是使用从每种类型嵌入到通用“top”类型(\mathbb{D})和反方向的部分投影来编译多态性。这个方案在直觉上是合理的,实际上已经在实践中多次使用。然而,证明其正确性并不重要。本文研究了系统F的编译,将其扩展为动态型Moggi计算元语言,并说明了如何使用逻辑关系证明编译的正确性。

MSC公司:

68N20型 编译与解释理论
03B70型 计算机科学中的逻辑
68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] 艾哈迈德。(2006)递归和量化类型的逐步诱导句法逻辑关系。《编程语言与系统》,PeterEstoft(ed),《计算机科学讲义》,第3924卷。柏林,海德堡:施普林格,第69-83.10.1007/11693024页·Zbl 1103.68010号 ·doi:10.1007/11693024
[2] 艾哈迈德。,芬德勒R.B.,SiekJ。G.和WadlerP。(2011)对所有人负责。第38届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。美国纽约州纽约市:ACM,第201-214页·Zbl 1284.68156号
[3] 阿马迪奥。(1993)关于PER模型的充分性。第18届计算机科学数学基础国际研讨会(MFCS)论文集。LNCS,第711卷。柏林,海德堡:施普林格,第222-231页·Zbl 0925.03093号
[4] 附录A。W.&McAllester博士。(2001)基本校对代码的递归类型索引模型。ACM事务处理。程序。语言系统23(5),657-683.10.1145/504709.504712·数字对象标识代码:10.1145/504709.504712
[5] 银行J。A.、MyersA。C.和LiskovB。(1997)Java的参数化类型。在第24届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL)的会议记录中。美国纽约州纽约市:ACM,第132-145页。
[6] 本顿。(2005)嵌入式口译员。J.功能。程序.15(4),503-542.10.1017/S09567968040053982161137·兹比尔1086.68525 ·doi:10.1017/S0956796804005398
[7] 本顿N.&胡克-K.(2010)《多态语言的可实现性和合成编译器正确性》。技术报告,MSR-TR-2010-62。微软研究。
[8] BrachaG.、。,奥德斯基。,斯托塔米尔瓦德勒。(1998)让未来成为过去的安全:为Java编程语言添加泛型。1998年ACM SIGPLAN面向对象编程系统、语言和应用会议记录(OOPSLA’98),第33卷。美国纽约州纽约市:ACM,第183-200页。
[9] CraryK.&公司HarperR.(2007)多态和递归类型的句法关系。电子。注释Theor。计算。科学172,259-299.10.1016/j.entcs.2007.02.010·Zbl 1277.68119号 ·doi:10.1016/j.entcs.2007.02.010
[10] 咖喱H。B.、Hindley J。R.&SeldinJ。P.(1972)组合逻辑,第二卷。逻辑和数学基础研究,第65卷。North-Holland出版公司·Zbl 0242.02029
[11] Findler R.B.&Felleisen M公司。(2002)高阶函数合同。在函数编程国际会议(ICFP)的会议记录中。美国纽约州纽约市:ACM,第48-59页。doi=10.1145/581478.581484·Zbl 1322.68039号 ·电话:10.1145/581478.581484
[12] 吉拉德J-Y.(1972)《宗教学校的解释》。巴黎第七大学博士论文。
[13] HarperR.(2012)编程语言实用基础。剑桥大学出版社。
[14] 胡克-K.和德雷耶D。(2011)ML和汇编之间的Kripke逻辑关系。第38届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。美国纽约州纽约市:ACM,第133-146页·Zbl 1284.68148号
[15] 伊拉克。,皮尔斯B。C.和WadlerP。(2001)Featherweight Java:Java和GJ的最小核心演算。ACM事务处理。程序。语言系统23(3),396-450.10.1145/503502.503505·doi:10.1145/503502.503505
[16] McCrackenN.1979(六月)对一种具有多态类型结构的程序设计语言的研究。雪城大学博士论文。
[17] 迈耶A。R.和WandM。(1985)类型lambda-calculi中的延续语义。《程序逻辑》,Rohit Parikh(编辑),《计算机科学讲义》,第193卷。柏林,海德堡:施普林格,第219-224页·Zbl 0565.68028号
[18] MilnerR.(1978)编程中的类型多态性理论。J.计算。系统。科学17(3),348-374.10.1016/0022-0000(78)90014-40516844·Zbl 0388.68003号 ·doi:10.1016/0022-0000(78)90014-4
[19] MinamideY公司。,莫里塞特集团HarperRt.(1996)类型闭合转换。在第23届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL)的会议记录中。美国纽约州纽约市:ACM,第271-283页。
[20] 莫吉。(1991)计算和单子的概念。通知。计算93(1),55-92.10.1016/0890-5401(91)90052-41115262·Zbl 0723.68073号 ·doi:10.1016/0890-5401(91)90052-4
[21] 摩尔群岛。,PiessensF.&公司奥德斯基M。(2008)更高种类的泛型。第23届ACM SIGPLAN面向对象编程系统语言和应用(OOPSLA)会议论文集。美国纽约州纽约市:ACM,第423-438页。
[22] 皮特斯A。M.(1996)域的关系属性。通知。计算127(2),66-90.10.1006/inco.1996.00521407989·Zbl 0868.68037号 ·doi:10.1006/inco.1996.0052
[23] 绘图G。D.(1977)LCF被认为是一种编程语言。西奥。计算。科学5(3),223-255.1016/0304-3975(77)90044-50484798·Zbl 0369.68006号 ·doi:10.1016/0304-3975(77)90044-5
[24] 拉姆西。(2011)使用高阶函数和类型嵌入解释语言。J.功能。程序.21(6),585-615.2864044·Zbl 1248.68135号
[25] 雷诺兹J。(1983)类型、抽象和参数多态性。InInformation Processing信息处理83。IFIP大会系列,第9卷。北荷兰人,第513-523页。
[26] 雷诺兹J。C.(1974)走向类型结构理论。在程序设计研讨会上,程序设计讨论会。柏林,海德堡:Springer-Verlag,第408-423页·Zbl 0309.68016号
[27] 俄罗斯罗斯伯格。V.和DreyerD。(2010)F-ing模块。第五届ACM SIGPLAN语言设计与实现类型研讨会论文集。美国纽约州纽约市:ACM,第89-102页。
[28] 斯科特·D。(1976)数据类型为格子。SIAM J.计算5(3),522-587.10.1137/02050370437330·Zbl 0337.02018号 ·数字对象标识代码:10.1137/0205037
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。