Macros 使用宏的优秀应用程序和程序的集合

Macros 使用宏的优秀应用程序和程序的集合,macros,lisp,scheme,racket,hygiene,Macros,Lisp,Scheme,Racket,Hygiene,我对宏非常感兴趣,并且刚刚开始了解它的真正威力。请帮我收集一些宏系统的有用信息 到目前为止,我有以下结构: 模式匹配: 安德鲁·赖特和布鲁斯·杜巴。图案 一九九五年配对计划 序言精神中的关系: 多莱·西塔兰。在schelog中编程。 丹尼尔·p·弗里德曼、威廉·E·伯德、, 和奥列格·基塞柳夫。推理的 阴谋家。麻省理工学院出版社,2005年7月 马蒂亚斯·费莱森。音译 开始进入方案。技术报告 印第安纳大学,1985年 可扩展循环构造: 塞巴斯蒂安·埃格纳。敏锐的理解力 方案中:SRFI-42的

我对宏非常感兴趣,并且刚刚开始了解它的真正威力。请帮我收集一些宏系统的有用信息

到目前为止,我有以下结构:

模式匹配:

安德鲁·赖特和布鲁斯·杜巴。图案 一九九五年配对计划

序言精神中的关系:

多莱·西塔兰。在schelog中编程。

丹尼尔·p·弗里德曼、威廉·E·伯德、, 和奥列格·基塞柳夫。推理的 阴谋家。麻省理工学院出版社,2005年7月

马蒂亚斯·费莱森。音译 开始进入方案。技术报告 印第安纳大学,1985年

可扩展循环构造:

塞巴斯蒂安·埃格纳。敏锐的理解力 方案中:SRFI-42的设计。在里面 计划及职能工作坊 编程,第13页至第26页,2009年9月 2005年

奥林颤抖着。环的解剖 关于范围和控制的故事。在里面 国际职司司长会议 编程,第2-14页,2005年

课程体系:

PLT。PLTMZLIB:图书馆手册。 技术报告PLT-TR2006-4-v352, PLT方案公司,2006年。

伊莱·巴兹莱。诈骗。

组件系统:

Ryan Culpeper、Scott Owens和 马修·弗拉特。句法抽象 在组件接口中。在里面 国际生殖健康会议 编程和组件工程, 第373-388页,2005年

软件合同检查

Matthew Flatt和Matthias Felleisen。 单元:热语言的酷模块 在ACM SIGPLAN会议上 程序设计语言及其应用 实施,第236-248页,1998年

奥斯卡·沃德尔和R·肯特·戴维格。 扩展句法分析的范围 抽象。在原则研讨会上 编程语言、页面的定义 203-215199

解析器生成器

斯科特·欧文斯、马修·弗拉特、奥林 颤抖,还有本杰明·麦克马伦。雷克瑟 和语法分析器生成器。在里面 计划及职能工作坊 编程,第41-52页,2009年9月 2004年

工程语义工具:

马蒂亚斯·费莱森,罗伯特·布鲁斯 芬德勒和马修·弗拉特。语义学 工程与PLT Redex。麻省理工学院出版社, 2009年8月

编译器转换规范:

迪潘维塔·萨卡尔、奥斯卡·瓦德尔和R·肯特·戴维格。纳米通道 编译教育框架。 功能医学杂志 节目,15(5):653-667,9月 2005教育明珠

新颖的执行形式

可序列化的servlet 格雷格·佩蒂约翰,约翰 克莱门茨、乔·马歇尔、施莱姆 克里希那穆提和马提亚斯·费莱森。 广义堆栈的延拓 检查。在国际上 函数式编程会议, 第216-227页,2005年

定理证明系统

塞巴斯蒂安·埃格纳。方案中的渴望理解:设计 对SRFI-42的研究。 在方案和功能编程研讨会上,第13-26页, 2005年9月

使用类型扩展基础语言

Sam Tobin Hochstadt和Matthias 费莱森。设计和设计 类型化方案的实现。在里面 程序设计原则专题讨论会 语言,第395-406页,2008年

懒惰

伊莱·巴兹莱和约翰·克莱门茨。 懒惰没有一切困难 工作:懒惰与严格相结合 教学语言。在功能上 和声明式编程 教育,第9-13页,2005年

功能反应性

格雷戈里·H·库珀和施里拉姆 克里希那穆提。嵌入动态 按值语言调用中的数据流。 在欧洲规划研讨会上, 2006年


参考资料:


收集自Cullepper&Felleisen,强化宏指令,ICFP 2010

Cullepper,Tobin Hochstadt和Felleisen,高级宏观学和类型化方案的实施,方案研讨会2007


Flatt,Findler,Felleisen,具有类、混合和特征的方案,APLAS 2006


Herman,Meunier,通过部分评估改进嵌入式语言的静态分析,ICFP 2004

这并不是特别精确,因为它分布在大量非常古老的出版物上,其中大多数我从未读过,但是IIRC公共Lisp对象系统和元对象协议*的大块可以是;是或者最初是用大量宏构建的


*这是迄今为止最先进的OO系统编程所见的Shivers、Carlstrom、Gasbichler和Sperber(1994年及以后)

有很多使用宏将微型语言嵌入Scheme的好例子。向我介绍了定义隐式引用其参数的宏的技术。看看进程表单、正则表达式和类似awk的迷你语言的使用。我建议将Scsh作为使用宏的起点

希尔斯代尔和弗里德曼(2000年)

显示如何使用延续传递样式使弱语法规则宏变得强大。给出了大量的例子

Flatt、Culpepper、Darais&Findler(已提交)

提供Racket/PLT方案中宏方法的概述和语义。没有太多的例子,但我认为这篇论文有你想要的东西


不是Scheme,但有点类似于Lisp方言,它广泛使用宏:

有实现各种模式匹配、列表理解、各种解析器生成器(包括PEG/Packrat实现)、嵌入式Prolog、ADT访客推理(如Haskell中的废弃样板)、可扩展语法宏、Hindley-Milner类型系统、类似Scheme的语法宏等。部分