×

使用带有一级绑定器的语法的程序。 (英语) Zbl 1485.68064号

Yang,Hongseok(编辑),《编程语言和系统》。2017年4月22日至29日在瑞典乌普萨拉举行的第26届欧洲编程研讨会(ESOP 2017),是欧洲软件理论与实践联合会议(ETAPS 2017)的一部分。诉讼程序。柏林:斯普林格。莱克特。注释计算。科学。10201, 504-529 (2017).
摘要:我们提出了一种通用方法,用于向现有的类ML语言添加对高阶抽象语法定义和一级上下文的支持。因此,处理表示变量和上下文的低级基础设施可以被分解。这避免了操作低级操作时的错误,简化了原型化程序转换的任务,并可能对实现此类系统的工作量和成本产生重大影响。
我们允许程序员在逻辑框架LF的变体中定义语法,并编写程序,通过模式匹配分析这些语法树,作为他们最喜欢的类ML语言的一部分。然后,通过使用ML中定义的LF的深度嵌入进行翻译,消除语法树上的语法定义和模式。我们利用类ML语言中经常支持的GADT来确保我们的翻译保留类型。生成的程序可以重用ML类型检查器进行类型检查,并重用其一阶模式匹配编译进行编译。我们已经在一个为OCaml编写的原型中实现了这个想法,并通过实现一系列示例(例如类型检查器、计算器)和编译阶段(例如CPS转换和闭包转换)证明了它的有效性。
关于整个系列,请参见[Zbl 1360.68021号].

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68甲15 程序设计语言理论
68甲18 函数编程和lambda演算
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Augusson,L。;Jouannaud,J-P,编译模式匹配,函数式编程语言和计算机体系结构,368-381(1985),海德堡:施普林格·doi:10.1007/3-540-15975-4_48
[2] 北卡罗来纳州本顿。;胡尔,CK;AJ肯尼迪;McBride,C.,Coq,J.Autom中的强类型术语表示。推理,49,2,141-159(2012)·Zbl 1269.68041号 ·doi:10.1007/s10817-011-9219-0
[3] Cave,A.,Pientka,B.:使用活页夹和索引数据类型进行编程。摘自:第39届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL 2012),第413-424页。ACM出版社(2012)·Zbl 1321.68141号
[4] Cheney,J.、Hinze,R.:第一类幻影类型。康奈尔大学CUCIS TR2003-1901技术报告(2003)
[5] Chlipala,A.J.:机械化语义的参数化高阶抽象语法。摘自:Hook,J.,Thiemann,P.(eds.)第13届ACM SIGPLAN函数式编程国际会议(ICFP 2008),第143-156页。ACM(2008)·Zbl 1323.68184号
[6] 戴维斯,R。;Pfenning,F.,阶段计算的模态分析,J.ACM,48,3,555-604(2001)·兹比尔1323.68107 ·电话:10.1145/382780.382785
[7] 费尔蒂,A。;Momigliano,A.,《混合:用高阶抽象语法进行推理的定义性两级方法》,J.Autom。推理,48,1,43-105(2012)·Zbl 1252.68252号 ·doi:10.1007/s10817-010-9194-x
[8] Gacek,A。;米勒,D。;Nadathur,G.,《关于计算推理的两级逻辑方法》,J.Autom。推理,49,2,241-273(2012)·Zbl 1290.68088号 ·doi:10.1007/s10817-011-9218-1
[9] 哈珀,R。;Honsell,F。;Plotkin,G.,《定义逻辑的框架》,J.ACM,40,1,143-184(1993)·Zbl 0778.03004号 ·数字对象标识代码:10.1145/138027.138060
[10] Leroy,X.、Doligez,D.、Frisch,A.、Garrigue,J.、Rémy,D.、Vouillon,J.:OCaml系统4.03版-文档和用户手册。国家信息与自动化研究所(2016)
[11] 米勒,D。;Palmidessi,C.,《语法的基本方面》,ACM计算。调查。,31, 3, 11 (1999) ·数字对象标识代码:10.1145/333580.333590
[12] Nanevski,A。;Pfenning,F。;Pientka,B.,语境模态类型理论,ACM Trans。计算。逻辑,9,3,1-49(2008)·Zbl 1367.03060号 ·doi:10.1145/1352582.1352591
[13] Pfenning,F。;Davies,R.,《模态逻辑的判断重建》,《数学》。结构。计算。科学。,11, 4, 511-540 (2001) ·Zbl 0997.03020号 ·doi:10.1017/S096012901003322
[14] Pfenning,F。;Schürmann,C。;Ganzinger,H.,《系统描述:twelf–演绎系统的元逻辑框架》,《自动演绎-CADE-16202-206》(1999),海德堡:斯普林格·doi:10.1007/3-5440-48660-7_14
[15] Pientka,B.:使用高阶抽象语法和一级替换进行编程的类型论基础。在:第35届ACM SIGPLAN-SIGCT编程语言原理年度研讨会(POPL 2008),第371-382页。ACM出版社(2008)·Zbl 1295.68068号
[16] Pientka,B。;Cave,A。;毛毡,AP;Middeldorp,A.,Inductive Beluga:编程证明(系统描述),自动演绎-CADE-25,272-281(2015),Cham:Springer,Cham·Zbl 1465.68294号 ·doi:10.1007/978-3-319-21401-618
[17] Pientka,B。;Pfenning,F。;Baader,F.,优化高阶模式统一,自动演绎-CADE-19,473-487(2003),海德堡:施普林格·Zbl 1278.68278号 ·doi:10.1007/978-3-540-45085-640
[18] Pitts,A.,《名义逻辑,名称和绑定的一阶理论》,Inf.Compute。,186, 2, 165-193 (2003) ·Zbl 1056.03014号 ·doi:10.1016/S0890-5401(03)00138-X
[19] Poswolsky,A.,Schürmann,C.:系统描述:Delphin——演绎系统的函数式编程语言。摘自:逻辑框架和元语言:理论与实践国际研讨会(LFMTP 2008)。理论计算机科学电子笔记(ENTCS),第228卷,第135-141页。爱思唯尔(2009)
[20] Pottier,F.:(C\alpha)ml概述。In:关于ml的ACM-SIGPLAN研讨会会议记录(ml 2005)。理论计算机科学电子笔记,第148卷(2),第27-52页(2006)
[21] Pottier,F.:FreshML的静态名称控制。摘自:第22届IEEE计算机科学逻辑研讨会(LICS 2007),第356-365页。IEEE计算机学会,2007年7月
[22] Shinwell,M.R.,Pitts,A.M.,Gabbay,M.J.:FreshML:使用活页夹编程变得简单。摘自:第八届函数式编程国际会议(ICFP 2003),第263-274页。ACM出版社(2003)·Zbl 1315.68058号
[23] Stansifer,P.,Wand,M.:罗密欧:一个更灵活的绑定安全编程系统。摘自:《第19届ACM SIGPLAN函数式编程国际会议论文集》,ICFP 2014,第53-65页(2014)·Zbl 1345.68076号
[24] Washburn,G。;Weirich,S.,《Boxes go banas:用参数多态性编码高阶抽象语法》,J.Funct。程序。,18, 1, 87-140 (2008) ·兹比尔1128.68021 ·doi:10.1017/S0956796807006557
[25] Westbrook,E.,Frisby,N.,Brauner,P.:哈斯克尔的霍比特人:函数式编程语言中的高阶编码库。摘自:第四届ACM Haskell研讨会(Haskell2011),第35-46页。ACM(2011)
[26] Xi、H.、Chen、C.、Chen和G.:保护递归数据类型构造函数。摘自:第30届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL 2003),第224-235页。ACM出版社(2003)·Zbl 1321.68161号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。