×

MetaML和带有显式注释的多阶段编程。 (英语) Zbl 0949.68047号

概要:我们介绍了MetaML,一种实用的、静态类型的多阶段编程语言。MetaML是一种“真正的”语言。我们已经构建了一个实现,并用它来解决多阶段的问题。MetaML允许程序员以类型安全的方式构造、组合和执行代码片段。代码片段可以包含自由变量,但它们遵循静态范围原则。MetaML在执行第一个阶段之前一次性对所有阶段执行类型检查。我们的第一个MetaML实现中的某些异常导致我们将MetaML实现的一个子集形式化。我们为这个子集提供了一个大步语义和类型系统,并证明了类型系统相对于大步语义的稳健性。从软件工程的角度来看,这意味着在MetaML子集中编写的生成器永远不会生成不安全的程序。完整MetaML的类型系统和语义仍在进行中。我们认为,多阶段语言本身作为编程语言是有用的,它们为高级程序生成技术提供了坚实的基础,它们应该支持一些功能,使程序员能够在不显著改变其正常编程风格的情况下编写分段计算。为了说明这一点,我们提供了一个简单的三阶段示例,详细阐述了一些实际问题。MetaML的设计基于两个主要原则,我们认为这两个原则是高级程序生成的基础,即跨阶段持久性和跨阶段安全性。我们提出这些原则,解释它们引起的技术问题,以及我们如何在实现中解决这些问题。

MSC公司:

68甲18 函数编程和lambda演算

软件:

毫升;微型ML
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] C.Consel,O.Danvy,部分评估教程注释,ACM Symp。《程序设计语言原理》,1993年1月,第493-501页。;C.Consel,O.Danvy,部分评估教程注释,ACM Symp。《编程语言原理》,1993年1月,第493-501页。
[2] C.Consel,F.Noöl,《运行时专门化的一般方法及其在C中的应用》,《1996年流行音乐大会记录:第23届ACM SIGPLAN-SIGACT交响乐》。《编程语言原理》,佛罗里达州圣彼得堡海滩,1996年1月21日至24日,第145-156页。;C.Consel,F.Noöl,《运行时专门化的一般方法及其在C中的应用》,《1996年流行音乐大会记录:第23届ACM SIGPLAN-SIGACT交响乐》。《编程语言原理》,佛罗里达州圣彼得堡海滩,1996年1月21日至24日,第145-156页。
[3] Danvy,O.,《跨越反思与部分评估之间的桥梁》(Bjorner,D.;Ershov,A.P.;Jones,N.D.,《部分评估与混合计算》(1988),北荷兰人:北荷兰阿姆斯特丹),83-116
[4] O.Danvy,类型定向部分评估,ACM Symp。《编程语言原理》,佛罗里达州,美国计算机学会,纽约,1996年1月,第242-257页。;O.Danvy,类型定向部分评估,ACM Symp。《编程语言原理》,佛罗里达州,美国计算机学会,纽约,1996年1月,第242-257页。
[5] O.丹维。;Malmkjaer,K。;Palsberg,J.,部分评估中eta-expansion的本质,LISP符号计算。,1, 19 (1995)
[6] R.Davies,绑定时间分析的时间逻辑方法,Proc。第11届IEEE年会。《计算机科学中的逻辑》,新泽西州新不伦瑞克,7月27日至30日,IEEE计算机社会出版社,马里兰州Silverspring,1996年,第184-195页。;R.Davies,绑定时间分析的时间逻辑方法,Proc。IEEE交响乐团。《计算机科学中的逻辑》,新泽西州新不伦瑞克,7月27日至30日,IEEE计算机社会出版社,马里兰州Silverspring,1996年,第184-195页。
[7] R.Davies,F.Pfenning,《分阶段计算的模态分析》,美国计算机学会第23号交响乐团。《编程语言原理》(POPL'96),佛罗里达州圣彼得堡海滩,1996年1月。;R.Davies,F.Pfenning,《分阶段计算的模态分析》,美国计算机学会第23号交响乐团。《编程语言原理》(POPL'96),佛罗里达州圣彼得堡海滩,1996年1月·Zbl 1323.68107号
[8] 吕克,R。;Jörgensen,J.,《程序专业化的高效多级生成扩展》(Swierstra,S.D.;Hermenegildo,M.,《编程语言实现、逻辑和程序》(PLILP’95)。编程语言实现、逻辑和程序(PLILP'95),《计算机科学讲义》,第982卷(1995年),施普林格:施普林格柏林),259-278
[9] 吕克,R。;Jörgensen,J.,《程序专门化的高效多级生成扩展》,《编程语言、实现、逻辑和程序》(PLILP’95)。程序专业化、编程语言、实现、逻辑和程序的高效多级生成扩展(PLILP’95),计算机科学讲义,第982卷(1995),施普林格:施普林格柏林
[10] 吕克,R。;约根森,J。,(多层专业化的快速绑定时间分析,PSI-96Andrei Ershov第二届国际纪念大会,《系统信息学的观点》,多层专业化快速绑定时间研究,PSI-96 Andrei Ershov第两届国际纪念会议,《系统信息学的观点,计算机科学讲义》,第1181卷)(1996),《施普林格:柏林施普林格》
[11] Gomard,C.K。;Jones,N.D.,非类型lambda演算的部分评估者,J.Funct。程序。,1, 1, 21-69 (1991) ·Zbl 1155.68350号
[12] B.Grant,M.Mock,M.Philipose,C.Chambers,S.J.Eggers,注解导向的C语言运行时专业化,Proc。ACM SIGPLAN Symp.公司。《部分评估和基于语义的程序操作》,荷兰阿姆斯特丹,1997年6月,第163-178页。;B.Grant,M.Mock,M.Philipose,C.Chambers,S.J.Eggers,注释指导的C语言运行时专业化,Proc。ACM SIGPLAN Symp.公司。《部分评估和基于语义的程序操作》,荷兰阿姆斯特丹,1997年6月,第163-178页·Zbl 0949.68052号
[13] 哈特克利夫,J。;Glück,R.,《关于在线专业化系统层次结构的推理》,(Danvy,O.;Glü),R.;Thiemann,P.,《部分评估》,计算机科学讲义,第1110卷(1996),施普林格:施普林格-柏林),161-182
[14] Henglein,F。;Mossin,C.,Polymorphic binding-time analysis,(Sannella,D.,Programming Languages and Systems-ESOP’94 5th European Symp.on Programming.Programming-Languages-and Systems–ESOP’1994 5th Euro洲Symp.on Programmming,Vol.788(1994年4月),英国爱丁堡,施普林格:英国爱丁伯格,施普林格柏林), 287-301
[15] J.Hook,T.Sheard,编译时反射的语义,技术代表CSE 93-019,俄勒冈州研究生院,1993年。;J.Hook,T.Sheard,编译时反射的语义,技术代表CSE 93-019,俄勒冈州研究生院,1993年。
[16] L.Hornof,C.Consel,J.Noyé,《通过使用敏感性实现现实程序的有效专业化》,SAS 1997,法国巴黎,1997年9月,第293-314页。;L.Hornof,C.Consel,J.Noyé,《通过使用敏感性实现现实程序的有效专业化》,SAS 1997年,法国巴黎,1997年9月,第293-314页。
[17] L.Hornof,J.Noyé,《命令式语言的精确绑定时间分析:流、上下文和返回敏感性》,Proc。ACM SIGPLAN Symp.公司。《部分评估和基于语义的程序操作》,荷兰阿姆斯特丹,1997年6月12-13日,第63-73页。;L.Hornof,J.Noyé,《命令式语言的精确绑定时间分析:流、上下文和返回敏感性》,Proc。ACM SIGPLAN Symp.公司。《部分评估和基于语义的程序操作》,荷兰阿姆斯特丹,1997年6月12-13日,第63-73页。
[18] N.D.Jones,《十年后的混合》,载于:《部分评估和基于语义的程序操纵》,康涅狄格州纽黑文(Sigplan Notices,第26卷,第9期,1991年9月),美国计算机学会,纽约,1995年6月,第24-38页。;N.D.Jones,《十年后的混合》,载于:《部分评估和基于语义的程序操纵》,康涅狄格州纽黑文(Sigplan Notices,第26卷,第9期,1991年9月),美国计算机学会,纽约,1995年6月,第24-38页。
[19] Jones,N.D.,为专业化写作口译员时不该做什么,(Danvy,O.;Glück,R.;Thiemann,P.,部分评估。部分评估,计算机科学讲义,第1110卷(1996),施普林格:施普林格柏林),216-237
[20] 琼斯,N.D。;Gomard,C.K。;Sestoft,P.,《部分评估和自动程序生成》(1993),普伦蒂斯·霍尔:普伦蒂斯霍尔恩格尔伍德悬崖,新泽西州·Zbl 0875.68290号
[21] S.L.P.Jones,J.Launchbury,《非限定函数式语言中作为一级公民的未装箱价值观》,《函数式编程与计算机体系结构》,1991年9月。;S.L.P.Jones,J.Launchbury,《非限定函数语言中作为一级公民的未装箱价值观》,《函数编程与计算机体系结构》,1991年9月。
[22] R.B.Kieburtz,F.Bellegarde,J.Bell,J.Hook,J.Lewis,D.Oliva,T.Sheard,L.Walton,T.Zhou,《从解决方案规范计算软件生成器》,TAPSOFT’95,《计算机科学讲义》,第915卷,斯普林格,柏林,1995年,第546-560页。;R.B.Kieburtz,F.Bellegarde,J.Bell,J.Hook,J.Lewis,D.Oliva,T.Sheard,L.Walton,T.Zhou,《根据解决方案规范计算软件生成器》,TAPSOFT’95,《计算机科学讲义》,第915卷,柏林斯普林格出版社,1995年,第546-560页。
[23] R.B.Kieburtz,L.McKinney,J.Bell,J.Hook,A.Kotov,J.Lewis,D.Oliva,T.Sheard,I.Smith,L.Walton,《软件构件生成中的软件工程实验》,载于《第18届国际》。软件工程会议,1996年3月。;R.B.Kieburtz,L.McKinney,J.Bell,J.Hook,A.Kotov,J.Lewis,D.Oliva,T.Sheard,I.Smith,L.Walton,《软件构件生成中的软件工程实验》,载于《第18届国际》。软件工程大会,1996年3月。
[24] M.Leone,P.Lee,《延迟编译:运行时代码生成的自动化》,技术代表CMU-CS-93-225,卡内基梅隆大学,1993年12月。;M.Leone,P.Lee,《延迟编译:运行时代码生成的自动化》,技术代表CMU-CS-93-225,卡内基梅隆大学,1993年12月。
[25] M.Leone,P.Lee,运行时代码生成的声明性方法,系统软件编译器支持研讨会(WCSSS),1996年2月。;M.Leone,P.Lee,《运行时代码生成的声明性方法》,系统软件编译器支持研讨会(WCSSS),1996年2月。
[26] Lowry,M。;Philpot,A。;Pressburger,T。;Underwood,I.,科学子程序库的Amphion自动编程,NASA科学。通知。Systems Newslett公司。,31, 22-25 (1994)
[27] Milner,R.,《编程中的类型多态性理论》,J.Compute。系统科学。,17, 348-375 (1978) ·Zbl 0388.68003号
[28] E.Moggi,《两级语言的分类说明》,1997年,1997年。;E.Moggi,《两级语言的分类说明》,1997年,1997年·Zbl 0911.68095号
[29] E.Moggi,W.Taha,Z.Benaissa,T.Sheard,《理想化的MetaML:更简单、更具表现力(包括证明)》,技术代表CSE-98-017,OGI,1998年10月。;E.Moggi,W.Taha,Z.Benaissa,T.Sheard,《理想化的MetaML:更简单、更具表现力(包括证明)》,技术代表CSE-98-017,OGI,1998年10月。
[30] Nielson,F.,指称环境中的程序转换,ACM Trans。程序。语言系统,7,3,359-379(1985)·Zbl 0566.68013号
[31] F.Nielson,从两级元语言生成代码的正确性,收录于:B.Robinet,R.Wilhelm(编辑),Proc。欧洲交响乐团。编程(ESOP 86),《计算机科学讲义》,第213卷,萨尔布吕肯,FRG,1986年3月,柏林斯普林格,第30-40页。;F.Nielson,从两级元语言生成代码的正确性,收录于:B.Robinet,R.Wilhelm(编辑),Proc。欧洲交响乐团。关于编程(ESOP 86),《计算机科学讲义》,第213卷,萨尔布吕肯,FRG,1986年3月,柏林斯普林格,第30-40页·兹伯利0589.68012
[32] 尼尔森,F.,《两级语义和抽象解释》,理论。计算。科学。,69, 2, 117-242 (1989) ·Zbl 0696.68093号
[33] 尼尔森,F。;Nielson,H.R.,《两级语义和代码生成》,Theoret。计算。科学。,56, 1, 59-133 (1988) ·Zbl 0632.68007号
[34] 尼尔森,F。;Nielson,H.R.,《两级函数语言》,《剑桥理论计算机科学丛书》,第34卷(1992年),剑桥大学出版社:剑桥大学出版社·Zbl 0763.68023号
[35] 尼尔森,F。;Nielson,H.R.,《多层lambda-calculi:代数描述》,(Danvy,O.;Glück,R.;Thiemann,P.,《部分评估》,达格斯图尔城堡,德国,1996年2月。部分评估。德国达格斯图尔城堡,1996年2月,计算机科学讲义,第1110卷(1996),施普林格:施普林格柏林),338-354
[36] F.Nielson,H.R.Nielsen,设计多级lambda-calculi的规定性框架,Proc。交响乐团。关于部分评估和基于语义的程序操作,阿姆斯特丹,1997年6月。;F.Nielson,H.R.Nielsen,设计多级lambda-calculi的规定性框架,Proc。交响乐团。关于部分评估和基于语义的程序操作,阿姆斯特丹,1997年6月。
[37] C.Pu,J.Walpole,《动态优化技术研究:内核设计的教训和方向》,技术代表OGI-CSE-93-007,俄勒冈州科学技术研究生院,1993年。;C.Pu,J.Walpole,《动态优化技术研究:内核设计的教训和方向》,技术代表OGI-CSE-93-007,俄勒冈州科学技术研究生院,1993年。
[38] T.Sheard,trpl用户指南,一种编译时反射式编程语言,技术代表,货币技术代表,90-109,马萨诸塞大学计算机和信息科学系,1990年。;T.Sheard,trpl用户指南,一种编译时反射式编程语言,技术代表,货币技术代表,90-109,马萨诸塞大学计算机和信息科学系,1990年。
[39] Sheard,T.,自动生成和使用抽象结构操作符,ACM Trans。程序。《语言与系统》,13,4,531-557(1991)
[40] T.Sheard,《crml使用指南》,cmopile-time reflective ml.(可从作者的主页获得),1993年10月。;T.Sheard,《crml使用指南》,cmopile-time reflective ml.(可从作者的主页获得),1993年10月。
[41] T.Sheard,类型参数编程,技术代表CSE 93-018,俄勒冈州研究生院,1993年。;T.Sheard,类型参数编程,技术代表CSE 93-018,俄勒冈州研究生院,1993年。
[42] T.Sheard,多态语言的类型定向在线部分求值器,in:Proc。交响乐团。关于部分评估和基于语义的程序操作,阿姆斯特丹,1997年6月。;T.Sheard,多态语言的类型定向在线部分求值器,in:Proc。交响乐团。关于部分评估和基于语义的程序操作,阿姆斯特丹,1997年6月。
[43] T.Sheard,N.Nelson,《使用程序生成器的类型安全抽象》,技术代表OGI-TR-95-013,俄勒冈州科学技术研究生院,1995年。;T.Sheard,N.Nelson,《使用程序生成器的类型安全抽象》,技术代表OGI-TR-95-013,俄勒冈州科学技术研究生院,1995年。
[44] M.Shields,T.Sheard,S.P.Jones,通过阶段类型推断进行动态类型划分,收录于:Proc。第25届ACM SIGPLAN-SIGACT交响乐团。《程序设计语言原理》,1998年1月。;M.Shields,T.Sheard,S.P.Jones,通过阶段类型推断进行动态类型划分,收录于:Proc。第25届ACM SIGPLAN-SIGACT交响乐团。《程序设计语言原理》,1998年1月。
[45] B.C.Smith,程序语言中的反思与语义,麻省理工学院博士论文,1982年1月。;B.C.Smith,程序语言中的反射和语义,麻省理工学院博士论文,1982年1月。
[46] B.C.Smith,《口齿不清的反思与语义》,ACM Symp。《程序设计语言原理》,1984年1月。;B.C.Smith,《口齿不清的反思与语义》,ACM Symp。《程序设计语言原理》,1984年1月。
[47] D.Stemple,R.B.Stanton,T.Sheard,P.Philbrow,R.Morrison,G.N.C.Kirby,L.Fegaras,R.L.Cooper,R.C.H.Connor,M.P.Atkinson,S.Alagic,《类型安全语言反射:生成器技术》,技术代表FIDE/92/49,ESPRIT BRA项目3070 FIDE,1992年。;D.Stemple,R.B.Stanton,T.Sheard,P.Philbrow,R.Morrison,G.N.C.Kirby,L.Fegaras,R.L.Cooper,R.C.H.Connor,M.P.Atkinson,S.Alagic,《类型安全语言反射:生成器技术》,技术代表FIDE/92/49,ESPRIT BRA项目3070 FIDE,1992年。
[48] 塔哈,W。;Benaissa,Z。;Sheard,T.,《多级编程:公理化和类型安全》,第25届ICALP(1998年7月),奥尔堡:丹麦奥尔堡
[49] W.Taha,T.Sheard,带显式注释的多级编程,Proc。ACM-SIGPLAN研讨会。关于部分评估和基于语义的程序操作PEPM’97,阿姆斯特丹,ACM,纽约,1997年,第203-217页。;W.Taha,T.Sheard,带显式注释的多级编程,Proc。ACM-SIGPLAN通信。关于部分评估和基于语义的程序操作PEPM’97,阿姆斯特丹,ACM,纽约,1997年,第203-217页。
[50] Thiemann,P.,《迈向全面方案的部分评估》(Kiczales,G.,Reflection 96(1996年4月),加利福尼亚州旧金山:美国加利福尼亚州旧金山),95-106
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。