×

直接反射元编程。 (英语) Zbl 1183.68164号

摘要:现有的元编程语言将程序编码为数据。本文提出了一种新的元程序设计语言,该语言基于非类型lambda演算,直接支持结构反射编程,无需任何编码。该语言具有按调用值和按调用名的lambda抽象,以及新的反射特性,可以对任意程序项进行内涵操作。该语言是范围安全的,即变量既不能被捕获,也不能脱离其范围。正如Wand所建议的那样,通过展示如何实现引用和评估操作来展示语言的表达能力。通过其他具有代表性的例子进一步展示了该语言在元编程中的实用性。描述并评估了原型实现。

MSC公司:

68甲18 函数编程和lambda演算
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] Arnold,K.,Gosling,J.,Holmes,D.:Java编程语言。普伦蒂斯·霍尔(Prentice-Hall),恩格伍德悬崖(Englewood Cliffs)(2000年)·Zbl 0876.68015号
[2] 艾德米尔,B.,博哈农,A.,费尔拜恩,M.,福斯特,J.,皮尔斯,B.,西维尔,P.,维蒂尼奥蒂斯,D.,瓦什伯恩,G.,魏里奇,S.,兹丹塞维奇,S.:大众的机械化元理论:POPLmark挑战。In:第十八届高阶逻辑定理证明国际会议论文集(TPHOLs 2005),2005·Zbl 1152.68516号
[3] Chen,C.,Xi,H.:通过类型化代码表示进行元编程。J.功能。程序。15(6),797-835(2005)·Zbl 1085.68547号 ·doi:10.1017/S0956796805005617
[4] Clavel,M.,Durán,F.,Eker,S.,Lincoln,P.,Martí-Oliet,n.,Meseguer,J.:Maude中的元级计算。In:程序。第二届重写逻辑及其应用国际研讨会。理论计算机科学电子笔记。Elsevier,阿姆斯特丹(1998)·Zbl 0917.68024号
[5] 康斯特布尔:用反思来解释和加强类型理论。In:证明与计算。北约ASI系列。施普林格,纽约(1994)·Zbl 0831.68101号
[6] Crary,K.,Weirich,S.,Morrisett,G.:类型错误语义中的内涵多态性。J.功能。程序。12(06), 567–600 (2002) ·Zbl 1040.68059号 ·doi:10.1017/S095679680104282
[7] Curry,H.,Hindley,J.,Seldin,J.:组合逻辑,第2卷。荷兰北部,阿姆斯特丹(1972年)·兹比尔0242.02029
[8] Davis,M.,Schwartz,J.:定理验证者和证明者的元数学扩展性。计算。数学。申请。5, 217–230 (1979) ·Zbl 0418.68079号 ·doi:10.1016/0898-1221(79)90044-0
[9] Ferber,J.:基于类的面向对象语言中的计算反射。摘自:OOPSLA’89:面向对象编程系统、语言和应用会议记录,第317–326页。纽约ACM出版社(1989)
[10] Ganz,S.,Sabry,A.,Taha,W.:作为多阶段计算的宏:在MacroML中键入安全的、生成的、绑定的宏。摘自:函数编程国际会议,第74-85页(2001年)·Zbl 1323.68116号
[11] Gao,J.,Heimdahl,M.,Van Wyk,E.:建模语言的灵活可扩展符号。在:软件工程基本方法,FASE 2007。计算机科学课堂讲稿,第4422卷,第102-116页。施普林格,纽约(2007)
[12] Girard,J.-Y.,Lafont,Y.,Taylor,P.:证明与类型。剑桥大学出版社,剑桥(1990)·Zbl 0671.68002号
[13] Goldberg,A.,Robson,D.:Smalltalk-80:语言及其实现。Addison-Wesley,雷丁(1983)·Zbl 0518.68001号
[14] Harrison,J.:定理证明中的元理论与反思:综述与评论。技术报告CRC-053,SRI剑桥,Millers Yard,Cambridge,UK(1995)
[15] Harrison,J.:HOL灯光系统参考(2006)·Zbl 1222.68364号
[16] 哈里森,J.:走向HOL灯的自我验证。参加:2006年国际自动推理联合会议·Zbl 1222.68364号
[17] Hunt,W.,Kaufmann,M.,Krug,R.,Moore,J.,Smith,E.:ACL2中的元推理。在:Hurd,J.,Melham,T.(编辑)第18届高阶逻辑定理证明国际会议,第163–178页。施普林格,纽约(2005)·Zbl 1152.68522号
[18] Jefferson,S.,Friedman,D.:一个简单的反思性翻译。In:IMSA’92反思与元层次架构国际研讨会,1992年
[19] 考夫曼,M.,马诺里奥斯,P.,摩尔,J.:计算机辅助推理:一种方法。Kluwer Academic,多德雷赫特(2000)
[20] Kelsey,R.、Clinger,W.、Rees,J.等人:关于算法语言方案的修订报告。SIGPLAN通知33(9)、26–76(1998)
[21] Kim,I.-S.,Yi,K.,Calcagno,C.:类lisp多级语言的多态模态类型系统。摘自:第33届ACM SIGPLAN-SIGACT编程语言原理研讨会,第257-268页(2006)·Zbl 1369.68076号
[22] Klop,J.,de Vrijer,R.:TRS和特殊重写格式的示例。收录于:TERESE(ed.)Term Rewriting Systems。剑桥大学出版社,剑桥(2003)。第三章
[23] Kohlbecker,E.,Friedman,D.,Felleisen,M.,Duba,B.:卫生宏观扩张。收录于:LFP’86:1986年ACM关于LISP和函数编程的会议记录,第151–161页。纽约ACM出版社(1986)
[24] Leroy,X.:编译器后端的正式认证,或者:使用校对助手对编译器进行编程。摘自:Peyton Jones,S.(编辑)2006年第32届ACM编程语言原理研讨会论文集·Zbl 1369.68124号
[25] Leroy,X.,Blazy,S.,Dargaye,Z.:C编译器前端的形式验证。In:Misra,J.,Nipkow,T.(编辑)《形式方法学报》,2006年
[26] Lewis,B.、LaLiberte,D.、Stallman,R.:GNU手册组:GNU Emacs Lisp参考手册。GNU出版社(2000)
[27] McCarthy,J.:符号表达式的递归函数及其机器计算,第一部分:公共。ACM 3(4),184–195(1960年)·Zbl 0101.10413号 ·doi:10.1145/367177.367199
[28] Mogensen,T.:lambda演算中的有效自我解释。J.功能。程序。2(3), 345–363 (1992) ·Zbl 0817.68051号 ·doi:10.1017/S0956796800000423
[29] Moreau,L.:动态绑定的句法理论。参见:软件开发理论与实践国际联合会议(TAPSOFT/FASE’97),第1214卷,第727–741页。施普林格,纽约(1997)
[30] Nanevski,A.:具有名称和必要性的元编程。技术报告CMU-CS-02-123R,卡内基梅隆大学(2002年11月)·Zbl 1322.68045号
[31] Nanevski,A.,Pfenning,F.:具有名称和必要性的分阶段计算。J.功能。程序。15(6), 893–939 (2005) ·Zbl 1085.68025号 ·doi:10.1017/S095679680500568X
[32] Peyton Jones,S.:函数式编程语言的实现。Prentice-Hall,Englewood Cliffs(1987)·Zbl 0712.68017号
[33] Pfenning,F.:逻辑框架。摘自:Robinson,A.,Voronkov,A.(编辑)《自动推理手册》。爱思唯尔和麻省理工学院出版社,剑桥(2001)。第21章·Zbl 0992.03038号
[34] Pfenning,F.,Elliott,C.:高阶抽象语法。参加:1988年ACM SIGPLAN语言设计与实现研讨会
[35] Pierce,B.:类型和编程语言。麻省理工学院出版社,剑桥(2002)·Zbl 0995.68018号
[36] Rueß,H.:结构演算中的计算反射及其在定理证明中的应用。摘自:《第三届兰姆达类型演算与应用国际会议论文集》,第319-335页。施普林格,纽约(1997)·Zbl 1063.03504号
[37] Schürmann,C.,Poswolsky,A.,Sarnat,J.:微积分。使用高阶编码的函数式编程。摘自:《第七届兰姆达类型演算与应用国际会议论文集》,第339-353页。施普林格,纽约(2005)·Zbl 1114.68030号
[38] Siskind,J.,Pearlmutter,B.:通过打开闭包的第一类非标准解释。摘自:2007年程序设计语言原则研讨会论文集
[39] Smith,B.:LISP中的反射和语义。摘自:第11届ACM SIGACT-SIGPLAN编程语言原理研讨会会议记录,第23-35页(1984年)
[40] Steele,G.:《通用LISP:语言》,第二版。数字出版社,贝尔福德(1990)·Zbl 0757.68008号
[41] Stroustrup,B.:C++编程语言,第三版。Addison-Wesley,雷丁(1997)·Zbl 0825.68056号
[42] Taha,W.:多阶段编程:理论和应用。俄勒冈州研究生院博士论文(1999年11月)
[43] Coq开发团队:Coq证明助理参考手册,V8.0版(2004)。http://coq.inia.fr
[44] GHC团队:Glorious Glasgow Haskell编译系统用户指南,版本6.6.1(2007)。http://www.haskell.org/ghc/docs/latest/html/users_guide/
[45] PLT小组:PLT DrScheme:Programming Environment Manual(2007)。http://download.plt-scheme.org/doc/drscheme/
[46] Wadler,P.:免费定理!参加:1989年第四届函数编程和计算机体系结构国际会议
[47] Wadsworth,C.:一些不寻常的{\(lambda\)}-微积分数字系统。收录:Seldin,J.,Hindley,J.(编辑)致H.B.Curry:《组合逻辑、Lambda微积分和形式主义论文》,第215-230页。学术,纽约(1980年)
[48] Wand,M.:fexprs的理论是微不足道的。Lisp符号。计算。10(3), 189–199 (1998) ·Zbl 05471082号 ·doi:10.1023/A:1007720632734
[49] Westbrook,E.:自由变量类型。2006年4月,第七届函数编程趋势研讨会(TFP 06)
[50] Wright,A.,Cartwright,R.:一个实用的方案软类型系统。ACM事务处理。程序。语言系统。19(1), 87–152 (1997) ·数字对象标识代码:10.1145/239912.239917
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。