Abstract
The fully parenthesized Cambridge Polish syntax of Lisp, originally regarded as a temporary expedient to be replaced by more conventional syntax, possesses a peculiar virtue: A read procedure can parse it without knowing the syntax of any expressions, statements, definitions, or declarations it may represent. The result of that parsing is a list structure that establishes a standard representation for uninterpreted abstract syntax trees.
This representation provides a convenient basis for macro processing, which allows the programmer to specify that some simple piece of abstract syntax should be replaced by some other, more complex piece of abstract syntax. As is well-known, this yields an abstraction mechanism that does things that procedural abstraction cannot, such as introducing new binding structures.
The existence of that standard representation for uninterpreted abstract syntax trees soon led Lisp to a greater reliance upon macros than was common in other high-level languages. The importance of those features is suggested by the ten pages devoted to macros in an earlier ACM HOPL paper, “The Evolution of Lisp.”
However, na'ive macro expansion was a leaky abstraction, because the movement of a piece of syntax from one place to another might lead to the accidental rebinding of a program’s identifiers. Although this problem was recognized in the 1960s, it was 20 years before a reliable solution was discovered, and another 10 before a solution was discovered that was reliable, flexible, and efficient.
In this paper, we summarize that early history with greater focus on hygienic macros, and continue the story by describing the further development, adoption, and influence of hygienic and partially hygienic macro technology in Scheme. The interplay between the desire for standardization and the development of new algorithms is a major theme of that story.
We then survey the ways in which hygienic macro technology has been adapted into recent non-parenthetical languages. Finally, we provide a short history of attempts to provide a formal account of macro processing.
- Martín Abadi, Luca Cardelli, Pierre-Louis Curien, and Jean-Jacques Lévy. 1990. Explicit Substitutions. In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, San Francisco, California, USA, January 1990. 31–46. Google Scholar
Digital Library
- Martín Abadi, Luca Cardelli, Pierre-Louis Curien, and Jean-Jacques Lévy. 1991. Explicit Substitutions. J. Funct. Program. 1, 4, 375–416. Google Scholar
Cross Ref
- Hal Abelson. 1988. RRRS-AUTHORS email with Subject: Can we standardize Scheme without killing it? 6 Feb 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Hal Abelson. 1989. RRRS-AUTHORS email with Subject: macros. 26 May 1989. Archived at Internet Archive: https: //web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Harold Abelson, Gerald Jay Sussman, and with Julie Sussman. 1985. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, MA.Google Scholar
- Michael D. Adams. 2015. Towards the Essence of Hygiene. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, January 15-17, 2015. 457–469. Google Scholar
Digital Library
- Norman Adams. 1987. RRRS-AUTHORS email with Subject: structures. 8 Jul 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Norman Adams. 1992. RRRS-AUTHORS email with Subject: record proprosal. 17 May 1992. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Norman Adams, David Kranz, Richard Kelsey, Jonathan Rees, Paul Hudak, and James Philbin. 1986. ORBIT: an optimizing compiler for Scheme. In SIGPLAN ’86 Proceedings of the the 1986 SIGPLAN Symposium on Compiler Construction. (Aug), 219–233.Google Scholar
Digital Library
- Torben Amtoft. 1993. Minimal Thunkification. In WSA ’93 Proceedings of the Third International Workshop on Static Analysis ( WSA âĂŹ93). Springer-Verlag, Berlin, Heidelberg (Sep), 218–229.Google Scholar
Digital Library
- Andrew Appel, Adam Chlipala, Benjamin Pierce, Zhong Shao, Stephanie Weirich, Steve Zdancewic, and Lennart Beringer. 2016. DeepSpec: the Science of Deep Specification. NSF Grant. Archived at Internet Archive: https://web.archive.org/ web/20190616201913/https://deepspec.org/mainGoogle Scholar
- Hiroshi Arai and Ken Wakita. 2010. An Implementation of a Hygienic Syntactic Macro System for JavaScript: A Preliminary Report. In Workshop on Self-Sustaining Systems (Tokyo, Japan) (S3 âĂŹ10). Association for Computing Machinery, 30âĂŞ40. Google Scholar
Digital Library
- H. P. Barendregt. 1985. The Lambda Calculus—Its Syntax and Semantics. Number 103 in Studies in Logic and the Foundations of Mathematics. North-Holland.Google Scholar
- H. P. Barendregt. 1992. Lambda calculi with types. In Handbook of Logic in Computer Science (Volume 2). Oxford University Press, 117–309.Google Scholar
- Joel Bartlett. 1989. RRRS-AUTHORS email with Subject: First BASH Meeting. 8 Aug 1989. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- David Bartley. 1987a. RRRS-AUTHORS email with Subject: Agenda. 10 Jun 1987. Archived at Internet Archive: https: //web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- David Bartley. 1987b. RRRS-AUTHORS email with Subject: macros. 10 Apr 1987. Archived at Internet Archive: https: //web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- David Bartley, Chris Hanson, and Jim Miller. 1991. IEEE Standard for the Scheme Programming Language. IEEE. 1178-1990.Google Scholar
- Alan Bawden. 1987. RRRS-AUTHORS email with Subject: Better late than never. 9 Jun 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Alan Bawden, William Clinger, Kent Dybvig, Matthew Flatt, Richard Kelsey, Manuel Serrano, and Michael Sperber. 2004. Scheme Standardization. Jan 2004. non-archival http://www.r6rs.org/charter/charter- mar- 2006.txt (also at Internet Archive 26 Sept. 2019 06:53:41 ).Google Scholar
- Alan Bawden, William Clinger, Kent Dybvig, Matthew Flatt, Richard Kelsey, Manuel Serrano, Michael Sperber, Marc Feeley, and Jonathan Rees. 2010. Scheme Standardization. Nov 2010. non-archival http://www.scheme- reports.org/2009/ charter.html (also at Internet Archive 17 April 2019 12:12:45 ).Google Scholar
- Alan Bawden and Jonathan Rees. 1988. Syntactic closures. In Proceedings of the 1988 ACM Conference on Lisp and Functional Programming. ACM (July), 86–95.Google Scholar
Digital Library
- Alan Bawden, Guy Steele, and Mitchell Wand. 2006. Scheme Language Steering Committee Report to the Community. Mar 2006. non-archival http://lambda- the- ultimate.org/node/1342 (also at Internet Archive 7 March 2020 14:08:49 ).Google Scholar
- Alan Bawden, Guy Steele, and Mitchell Wand. 2007a. R6RS Ratification. Aug 2007. non-archival http://www.r6rs.org/ ratification/ (also at Internet Archive 25 Sept. 2019 02:18:36 ).Google Scholar
- Alan Bawden, Guy Steele, and Mitchell Wand. 2007b. R6RS Ratification Vote. Aug 2007. non-archival http://www.r6rs. org/ratification/results.html (also at Internet Archive 6 June 2019 12:36:23 ).Google Scholar
- Alan Bawden, Guy Steele, and Mitchell Wand. 2009a. Steering Committee Election Results. 2 Mar 2009. non-archival http://www.r6rs.org/steering- committee/election/results.html (also at Internet Archive 25 Sept. 2019 02:19:22 ).Google Scholar
- Alan Bawden, Guy Steele, and Mitchell Wand. 2009b. Steering Committee Replacement. Jan 2009. non-archival http://www.r6rs.org/steering- committee/election/announcement.html (also at Internet Archive 25 Sept. 2019 02:18:56 ).Google Scholar
- Daniel G. Bobrow and Daniel L. Murphy. 1967. Structure of a LISP system using two-level storage. In Communications of the ACM, Vol. 10. (March), 155–159.Google Scholar
Digital Library
- Ana Bove and Laura Arbilla. 1992. A confluent calculus of Macro expansion and evaluation. In 1992 ACM Conference on LISP and Functional Programming. Google Scholar
Digital Library
- S. Bradner. 1997. Key words for use in RFCs to Indicate Requirement Levels. Mar 1997. https://tools.ietf.org/html/rfc2119 (also at Internet Archive 26 June 2019 13:24:34 ).Google Scholar
Digital Library
- Gary Brooks. 1984. RRRS-AUTHORS email with Subject: Environments and Macros. 20 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- P. J. Brown. 1974. Macro Processors and Techniques for Portable Software. Wiley.Google Scholar
- Eugene Burmako. 2013. Scala Macros: Let Our Powers Combine! On How Rich Syntax and Static Types Work with Metaprogramming. In SCALA ’13. non-archival http://scalamacros.org/papers.html (also at Internet Archive 24 June 2018 03:30:25 ).Google Scholar
- Eugene Burmako and Martin Odersky. 2012. Scala Macros, a Technical Report. In Third International Valentin Turchin Workshop on Metacomputation. non-archival http://scalamacros.org/papers.html (also at Internet Archive 24 June 2018 03:30:25 ).Google Scholar
- Clyde Camp. 1988. RRRS-AUTHORS email with Subject: Scheme Standardization. 6 Jan 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Luca Cardelli, Florian Matthes, and Martín Abadi. 1993. Extensible Grammars for Language Specialization. In Database Programming Languages (DBPL-4), Proceedings of the Fourth International Workshop on Database Programming Languages - Object Models and Languages, Manhattan, New York City, USA, 30 August - 1 September 1993 (Workshops in Computing), Catriel Beeri, Atsushi Ohori, and Dennis E. Shasha (Eds.). Springer, 11–31. Google Scholar
Cross Ref
- T. E. Cheatham, Jr. 1966. The introduction of definitional facilities into higher level programming languages. In AFIPS Proceedings—Fall Joint Computer Conference 29. 623–637.Google Scholar
Digital Library
- Will Clinger. 1984a. RRRS-AUTHORS email with Subject: feature list for workshop (long message). 15 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Will Clinger. 1984b. RRRS-AUTHORS email with Subject: questions for workshop (long message). 15 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Will Clinger. 1984c. RRRS-AUTHORS email with Subject: TI position (long message). 17 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Will Clinger. 1985. RRRS-AUTHORS email with Subject: DRAFT of Revised Revised Report (LONG message). 18 Mar 1985. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ ftpdir/scheme- mail/Google Scholar
- Will Clinger. 1986. RRRS-AUTHORS email with Subject: Minutes from lunch 5 August 1986. 14 Aug 1986. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Will Clinger. 1987. RRRS-AUTHORS email with Subject: Minutes of the Scheme meeting etc. 10 Jul 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- William Clinger. 1988a. The June 1987 Meeting. ACM SIGPLAN Lisp Pointers I, 5 (Dec-Jan-Feb-Mar), 25–27. Google Scholar
Digital Library
- William Clinger. 1988b. Standardization at Snowbird. ACM SIGPLAN Lisp Pointers II, 2 (Oct-Nov-Dec), 43–47. Google Scholar
Digital Library
- William Clinger. 1989. RRRS-AUTHORS email with Subject: planned changes to R3.95RS. 25 May 1989. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- William Clinger. 1991a. Hygienic macros through explicit renaming. ACM SIGPLAN Lisp Pointers IV, 4 (Oct-Nov-Dec), 25–28. Google Scholar
Digital Library
- William Clinger. 1991b. Macros in Scheme. ACM SIGPLAN Lisp Pointers IV, 4 (December), 17–23. ftp://ftp.cs.indiana.edu/ pub/scheme- repository/doc/prop/macinsch.ps.gz (also at Internet Archive 19 Nov. 2018 09:05:25 ).Google Scholar
Digital Library
- William Clinger. 1992. RRRS-AUTHORS email with Subject: draft minutes of June 1992 meeting. 9 Oct 1992. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- William Clinger. 1993. RRRS-AUTHORS email with Subject: proposals for R5RS (sorry). 11 Apr 1993. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- William Clinger, Hal Abelson, Norman Adams, David Bartley, Gary Brooks, Dan Friedman, Robert Halstead, Chris Hanson, Chris Haynes, Eugene Kohlbecker, Don Oxley, Kent Pitman, Jonathan Rees, Bill Rozas, Gerald Jay Sussman, and Mitchell Wand. 1985. The revised revised report on Scheme, or an uncommon Lisp. MIT AI Memo 848 (August). https://dspace.mit.edu/handle/1721.1/5600Google Scholar
- Will Clinger, R. Kent Dybvig, Michael Sperber, and Anton van Straaten. 2005. SRFI 76: R6RS Records. Sep 2005. https: //srfi.schemers.org/srfi- 76/ (also at Internet Archive 27 Nov. 2018 01:15:17 ).Google Scholar
- Will Clinger, Marc Feeley, Chris Hanson, Jonathan Rees, and Olin Shivers. 2009. Announcement of scheme-reports.org web site. Posted to scheme-reports. 20 Oct 2009. non-archival http://www.scheme- reports.org/2009/announcement.html (also at Internet Archive 17 April 2019 12:12:37 ).Google Scholar
- William Clinger and Jonathan Rees. 1991a. Macros That Work. In Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Orlando, Florida, USA) (POPL âĂŹ91). Association for Computing Machinery, New York, NY, USA (January), 155âĂŞ–162. Google Scholar
Digital Library
- William Clinger and Jonathan Rees. 1991b. The revised 4 report on the algorithmic language Scheme. ACM Lisp Pointers 4, 3, 1–55.Google Scholar
- William D Clinger. 2006. Formal comment #90: Record layers are not orthogonal. Nov 2006. non-archival http: //www.r6rs.org/formal- comments/comment- 90.txt (also at Internet Archive 18 May 2013 01:48:12 ).Google Scholar
- William D Clinger. 2007a. Formal comment #267: syntactic sugar causes cancer of the exports. Apr 2007. non-archival http://www.r6rs.org/formal- comments/comment- 267.txt (also at Internet Archive 8 Aug. 2008 12:20:09 ).Google Scholar
- William D Clinger. 2007b. Rationale issues. Posted to r6rs-discuss. 27 Jun 2007. non-archival http://lists.r6rs.org/ pipermail/r6rs- discuss/2007- June/002889.html (also at Internet Archive 5 July 2008 18:03:01 ). Response to van Tonder [ 2007a ].Google Scholar
- William D Clinger. 2007c. Re: [r6rs-discuss] an essay on language design. Posted to r6rs-discuss. 25 Jul 2007. nonarchival http://lists.r6rs.org/pipermail/r6rs- discuss/2007- July/003125.html (also at Internet Archive 28 Aug. 2008 11:51:04 ). Repairs a truncated email that had been sent on 10 July.Google Scholar
- William D Clinger. 2007d. Re: [r6rs-discuss] an essay on language design. Posted to r6rs-discuss. 24 Jul 2007. Archived at Internet Archive: https://web.archive.org/web/20070915235512/http://lists.r6rs.org/pipermail/r6rs- discuss/2007- July. txt.gz This is a bitter complaint about two paragraphs of “tendentious nonsense” that were added to the R 5 .97 RS draft, which was up for ratification and would be ratified in August 2007.Google Scholar
- William D Clinger. 2007e. Vote against ratification of R6RS. Aug 2007. non-archival http://www.r6rs.org/ratification/ results.html#X101 (also at Internet Archive 6 June 2019 12:36:23 ).Google Scholar
- William D Clinger. 2008. [email protected]. In LISP50: Celebrating the 50th Anniversary of Lisp (Nashville, Tennessee) (LISP50). Association for Computing Machinery, New York, NY, USA, Article Article 7, 5 pages. Google Scholar
Digital Library
- William D Clinger. 2009. SRFI 99: ERR5RS Records. Oct 2009. https://srfi.schemers.org/srfi- 99/ (also at Internet Archive 3 Aug. 2017 12:43:58 ).Google Scholar
- William D Clinger. 2015. R7RS Considered Unifier of Previous Standards. In Scheme and Functional Programming Workshop 2015. Archived at Internet Archive: https://web.archive.org/web/20160911102749/http://schemeworkshop.org/2015/ sfpw1- 2015- clinger.pdfGoogle Scholar
- William D Clinger. 2016. clarifying that field names are symbols. Posted to SRFI 99 discussion list. 21 Jun 2016. https://srfiemail.schemers.org/srfi- 99/msg/3905499/ (also at Internet Archive 7 March 2020 15:17:22 ).Google Scholar
- William D Clinger. 2017a. apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 18 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6084267/ (also at Internet Archive 7 March 2020 18:15:45 ).Google Scholar
- William D Clinger. 2017b. Re: apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 19 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6090613/ (also at Internet Archive 7 March 2020 18:18:52 ).Google Scholar
- William D Clinger. 2017c. Re: apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 20 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6091649/ (also at Internet Archive 7 March 2020 18:21:56 ).Google Scholar
- William D Clinger. 2017d. Re: apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 20 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6091691/ (also at Internet Archive 7 March 2020 18:20:35 ).Google Scholar
- William D Clinger. 2017e. Re: apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 20 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6092367/ (also at Internet Archive 7 March 2020 18:25:07 ).Google Scholar
- William D Clinger and Lars Thomas Hansen. 1994. Lambda, the ultimate label, or a simple optimizing compiler for Scheme. In Proceedings of the 1994 ACM conference on LISP and Functional Programming, Vol. VII. Association for Computing Machinery, New York, NY, USA (July), 128–139. Google Scholar
Digital Library
- Ludovic Courtès. 2007a. R6RS Formal Comment #264: Versioned names for base libraries considered harmful. 14 Jun 2007. non-archival http://www.r6rs.org/formal- comments/comment- 264.txt (also at Internet Archive 4 July 2008 13:45:40 ).Google Scholar
- Ludovic Courtès. 2007b. Versioned standard libraries. Posted to r6rs-discuss. 24 Sep 2007. non-archival http: //lists.r6rs.org/pipermail/r6rs- discuss/2007- September/003321.html (also at Internet Archive 28 Aug. 2008 19:26:42 ).Google Scholar
- John Cowan. 2016. R7RS Small Errata (unofficial). Nov 2016. non-archival https://small.r7rs.org/wiki/R7RSSmallErrata/ (also at Internet Archive 31 Dec. 2019 22:51:41 ).Google Scholar
- John Cowan. 2017. RedEdition Version 8. 28 Aug 2017. non-archival https://small.r7rs.org/wiki/RedEdition/ (also at Internet Archive 8 March 2020 22:52:40 ).Google Scholar
- Ryan Culpepper and Matthias Felleisen. 2004. Taming Macros. In Generative Programming and Component Engineering (GPCE 2004). (October). Google Scholar
Cross Ref
- Ryan Culpepper, Sam Tobin-Hochstadt, and Matthew Flatt. 2007. Advanced Macrology and the Implementation of Typed Scheme. In 2007 Workshop on Scheme and Functional Programming. (September).Google Scholar
- Pavel Curtis. 1989. RRRS-AUTHORS email with Subject: Programmer-defined data types. 18 Aug 1989. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Pavel Curtis and James Rauen. 1990. A module system for Scheme. In Proceedings of the 1990 ACM conference on LISP and Functional Programming (Nice, France) (LFP âĂŹ90). Association for Computing Machinery, New York, NY, USA (Jun), 13–19. Google Scholar
Digital Library
- Tim Disney, Nathan Faubion, David Herman, and Cormac Flanagan. 2014. Sweeten your JavaScript: hygienic macros for ES5. In DLS’14, Proceedings of the 10th ACM Symposium on Dynamic Languages, part of SLASH 2014, Portland, OR, USA, October 20-24, 2014. 35–44. Google Scholar
Digital Library
- Timothy Charles Disney. 2015. Hygienic Macros for JavaScript. Ph.D. Dissertation. UC Santa Cruz.Google Scholar
- Kent Dybvig. 1985. RRRS-AUTHORS email with Subject: Chez Scheme. 4 Feb 1985. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Kent Dybvig. 2005. SRFI 93: R6RS Syntax-Case Macros. Sep 2005. https://srfi.schemers.org/srfi- 93/ (also at Internet Archive 27 Nov. 2018 01:15:15 ).Google Scholar
- Kent Dybvig, Will Clinger, Matthew Flatt, Mike Sperber, and Anton van Straaten. 2006. R6RS Status Report. Feb 2006. non-archival https://schemers.org/Documents/Standards/Charter/status- mar- 2006.html (also at Internet Archive 27 Nov. 2018 01:12:56 ).Google Scholar
- R. Kent Dybvig. 1987. The Scheme Programming Language. Prentice Hall.Google Scholar
- R. Kent Dybvig. 1992. Writing Hygienic Macros in Scheme with Syntax-Case. Technical Report 356. Indiana University Computer Science Department (June). https://www.cs.indiana.edu/ftp/techreports/TR356.pdfGoogle Scholar
- R. Kent Dybvig. 1993. RRRS-AUTHORS email with Subject: Re: proposals for R5RS (sorry). 12 Apr 1993. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- R. Kent Dybvig. 1996a. RRRS-AUTHORS email with Subject: compromise record-type proposal. 26 Apr 1996. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- R. Kent Dybvig. 1996b. RRRS-AUTHORS email with Subject: Re: Generative record types. 24 Apr 1996. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- R. Kent Dybvig. 1996c. RRRS-AUTHORS email with Subject: Re: Record proposal. 29 Apr 1996. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- R. Kent Dybvig. 2000. From Macrogeneration to Syntactic Abstraction. Higher Order Symbol. Comput. 13, 1âĂŞ-2 (April), 57âĂŞ63. Google Scholar
Digital Library
- R. Kent Dybvig. 2007. Re: [r6rs-discuss] an essay on language design. Posted to r6rs-discuss. 24 Jul 2007. Archived at Internet Archive: https://web.archive.org/web/20070915235512/http://lists.r6rs.org/pipermail/r6rs- discuss/2007- July.txt. gz This short note promises to correct wording that had been attacked by Clinger [ 2007d ].Google Scholar
- R. Kent Dybvig, Daniel P. Friedman, and Christopher T. Haynes. 1986. Expansion-Passing style: Beyond Conventional Macros. In Proceedings of the 1986 ACM Conference on LISP and Functional Programming (Cambridge, Massachusetts, USA) (LFP âĂŹ86). Association for Computing Machinery, New York, NY, USA, 143âĂŞ150. Google Scholar
Digital Library
- R. Kent Dybvig, Daniel P. Friedman, and Christopher T. Haynes. 1988. Expansion-Passing Style: A General Macro Mechanism. LISP and Symbolic Computation 1, 1 (June). Google Scholar
Cross Ref
- R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. 1993. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5, 4 (December).Google Scholar
Digital Library
- R. Kent Dybvig and Oscar Waddell. 2000. Portable syntax-case. Aug 2000. non-archival https://www.cs.indiana.edu/syntaxcase/old- psyntax.html (also at Internet Archive 14 April 2016 07:30:20 ).Google Scholar
- Sebastian Erdweg, Tijs van der Storm, and Yi Dai. 2014. Capture-Avoiding and Hygienic Program Transformations. In ECOOP 2014 - Object-Oriented Programming - 28th European Conference, Uppsala, Sweden, July 28 - August 1, 2014. Proceedings. 489–514. Google Scholar
Digital Library
- Marc Feeley. 2004a. The R6RS Status Report. In Proceedings of the Fifth Workshop on Scheme and Functional Programming. https://www.cs.indiana.edu/ftp/techreports/TR600.pdf (also at Internet Archive 5 July 2017 10:28:33 ).Google Scholar
- Marc Feeley. 2004b. The Revised R6RS Status Report. In Proceedings of the Fifth Workshop on Scheme and Functional Programming. (Sep). https://schemers.org/Documents/Standards/Charter/2004- 10- 13.pdf (also at Internet Archive 27 Nov. 2018 01:12:56 ). There are two versions of the proceedings for that workshop, differing mainly by whether they include Feeley’s original R6RS status report or this revision of that status report.Google Scholar
- Marc Feeley. 2007. Implementors’ intentions concerning R6RS. Posted to r6rs-discuss. 26 Oct 2007. Archived at Internet Archive: https://web.archive.org/web/20110727195419/http://lists.r6rs.org/pipermail/r6rs- discuss/2007- October/003351. htmlGoogle Scholar
- Marc Feeley. 2010. Volunteering for Scheme language standardization working groups ***deadline January 8***. Forwarded to r6rs-discuss by Jonathan Rees. 5 Jan 2010. http://scheme- reports.org/mail/scheme- reports/msg02360.html (also at Internet Archive 7 March 2020 13:49:56 ).Google Scholar
- Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. MIT Press, Cambridge, MA.Google Scholar
Digital Library
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay A. McCarthy, and Sam TobinHochstadt. 2018. A programmable programming language. Commun. ACM 61, 3, 62–71. Google Scholar
Digital Library
- Matthew Flatt. 2002. Composable and Compilable Macros: You Want it When?. In International Conference on Functional Programming (ICFP’2002).Google Scholar
Digital Library
- Matthew Flatt. 2016. Binding as sets of scopes. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, St. Petersburg, FL, USA, January 20 - 22, 2016. 705–717. Google Scholar
Digital Library
- Matthew Flatt, Ryan Culpepper, David Darais, and Robert Bruce Findler. 2012. Macros that Work Together - Compiletime bindings, partial expansion, and definition contexts. J. Funct. Program. 22, 2, 181–216. Google Scholar
Digital Library
- Matthew Flatt and Kent Dybvig. 2006. SRFI 83: R6RS Library Syntax. Sep 2006. https://srfi.schemers.org/srfi- 83/ (also at Internet Archive 11 Feb. 2019 12:01:20 ).Google Scholar
- Andy Freeman. 1988. RRRS-AUTHORS email with Subject: Re: Standardization. 6 Feb 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Murdoch Gabbay and Andrew M. Pitts. 2002. A New Approach to Abstract Syntax with Variable Binding. Formal Asp. Comput. 13, 3-5, 341–363. Google Scholar
Digital Library
- Dick Gabriel. 1987. RRRS-AUTHORS email with Subject: Some Remarks on Standardization (by someone who has been there). 22 Dec 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit. edu/mac/ftpdir/scheme- mail/Google Scholar
- Dick Gabriel. 1988. RRRS-AUTHORS email with Subject: Clarifications. 30 Jan 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Richard P. Gabriel and Kent M. Pitman. 1988. Technical Issues of Separation in Function Cells and Value Cells. Lisp and Symbolic Computation 1, 1 (Jun), 81–101. Google Scholar
Cross Ref
- Steven E. Ganz, Amr Sabry, and Walid Taha. 2001. Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in MacroML. In Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming (ICFP ’01), Firenze (Florence), Italy, September 3-5, 2001. 74–85. Google Scholar
Digital Library
- Josef Martin Gasbichler. 2006. Fully-parameterized, first-class modules with hygienic macros. Ph.D. Dissertation. University of Tübingen, Germany. non-archival http://w210.ub.uni- tuebingen.de/dbt/volltexte/2006/2423/index.htmlGoogle Scholar
- Abdulaziz Ghuloum and R. Kent Dybvig. 2007. Implicit Phasing for R6RS Libraries. In Proceedings of the 2007 International Conference on Functional Programming, Vol. 42. Association for Computing Machinery, New York, NY, USA (Oct), 303–313. Google Scholar
Digital Library
- Abdulaziz Ghuloum and R. Kent Dybvig. (no date). Portable syntax-case. non-archival http://www.cs.indiana.edu/ chezscheme/r6rs- libraries (also at Internet Archive 26 April 2017 09:42:10 ).Google Scholar
- Albert Gräf. 2018. The Pure Manual (subsection on Macro Hygiene). 15 April 2018. non-archival https://agraef.github.io/ pure- docs/pure.html#macro- hygiene (also at Internet Archive 26 Dec. 2018 19:18:05 ).Google Scholar
- Paul Graham. 1993. On Lisp: Advanced Techniques for Common Lisp. Prentice-Hall. Text at non-archival http://www. paulgraham.com/onlisp.html (also at Internet Archive 1 Feb. 2020 10:38:36 ).Google Scholar
Digital Library
- Timothy Griffin. 1988. Notational definition-a formal account. In Proceedings of the Third Annual Symposium on Logic in Computer Science (LICS ’88), Edinburgh, Scotland, UK, July 5-8, 1988. 372–383. Google Scholar
Cross Ref
- Chris Hanson. 1984. RRRS-AUTHORS email with Subject: Scheme meeting. 13 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Chris Hanson. 1991. A Syntactic Closures Macro Facility. ACM SIGPLAN Lisp Pointers IV, 4 (December).Google Scholar
- Timothy P. Hart. 1963. MACRO Definitions for LISP. Technical Report 57. (Oct). https://dspace.mit.edu/handle/1721.1/6111Google Scholar
- Chris Haynes. 1988a. RRRS-AUTHORS email with Subject: Scheme standardization meeting. 17 May 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Chris Haynes. 1988b. RRRS-AUTHORS email with Subject: standardization. 5 Jan 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Chris Haynes. 1990. RRRS-AUTHORS email with Subject: Minutes of the 4th Scheme standarization meeting. 31 Jan 1990. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ ftpdir/scheme- mail/Google Scholar
- David Herman. 2010. A Theory of Typed Hygienic Macros. Ph.D. dissertation. Northeastern University, Boston, Massachusetts (May).Google Scholar
Digital Library
- David Herman and Mitchell Wand. 2008. A Theory of Hygienic Macros. In Programming Languages and Systems, 17th European Symposium on Programming, ESOP 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, 2008. Proceedings. 48–62. Google Scholar
Cross Ref
- Robert Hieb, R. Kent Dybvig, and Carl Bruggeman. 1992. Syntactic Abstraction in Scheme. Technical Report TR-355. Indiana University Computer Science Department (June). ftp://ftp.cs.indiana.edu/pub/scheme- repository/doc/pubs/iucstr355.ps. gzGoogle Scholar
- IEEE. 2008. IEEE 1178-1990-IEEE Standard for the Scheme Programming Language. https://standards.ieee.org/standard/1178-1990.htmlGoogle Scholar
- Aubrey Jaffer. 2007. SRFI 96: SLIB Prerequisites. Jun 2007. https://srfi.schemers.org/srfi- 96/ (also at Internet Archive 3 Aug. 2017 11:04:51 ).Google Scholar
- Takashi Kato. 2014. Implementing R7RS on an R6RS Scheme system. In Scheme and Functional Programming Workshop 2014. Archived at Internet Archive: https://web.archive.org/web/20190829133853/http://www.schemeworkshop.org/ 2014/papers/Kato2014.pdfGoogle Scholar
- Andrew W. Keep and R. Kent Dybvig. 2012. A sufficiently smart compiler for procedural records. In Proceedings of the 2012 Annual Workshop on Scheme and Functional Programming (Copenhagen, Denmark) (Scheme âĂŹ12). Association for Computing Machinery (Sep), 36âĂŞ–46. Google Scholar
Digital Library
- Daniel Keep. (no date). The Little Book of Rust Macros, Captures and Expansion Redux. non-archival https://danielkeep. github.io/tlborm/book/mbe- min- captures- and- expansion- redux.html (also at Internet Archive 3 Nov. 2019 03:14:53 ).Google Scholar
- Richard Kelsey. 1989. Compilation by Program Transformation. Ph.D. Dissertation. Yale University (May).Google Scholar
- Richard Kelsey. 1999. SRFI 9: Defining Record Types. Sep 1999. https://srfi.schemers.org/srfi- 9/ (also at Internet Archive 26 Nov. 2018 07:02:14 ).Google Scholar
- Richard Kelsey, William Clinger, and Jonathan Rees. 1998. The revised 5 report on the algorithmic language Scheme. ACM SIGPLAN Notices 33, 9 (September), 26–76.Google Scholar
- Richard Kelsey and Paul Hudak. 1989. Realistic compilation by program transformation (detailed summary). In POPL ’89 Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. (Jan), 281–292.Google Scholar
Digital Library
- Oleg Kiselyov. 2001. Re-writing abstractions, or Lambda: the ultimate pattern macro. Posted to comp.lang.functional and comp.lang.scheme. December 2001. non-archival http://okmij.org/ftp/Computation/rewriting- rule- lambda.txt (also at Internet Archive 8 Aug. 2019 23:59:12 ).Google Scholar
- Oleg Kiselyov. 2002. How to write seemingly unhygienic and referentially opaque macros with syntax-rules. In Workshop on Scheme and Functional Programming (2002). (October). non-archivalGoogle Scholar
- Steve Klabnik and Carol Nichols. 2018. The Rust Programming Language. No Starch Press (Jun). non-archival https: //doc.rust- lang.org/book/ (also at Internet Archive 29 Feb. 2020 15:32:06 ).Google Scholar
- Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. 1986. Hygienic macro expansion. In Proceedings of the 1986 ACM Conference on LISP and Functional Programming.Google Scholar
Digital Library
- Eugene E. Kohlbecker and Mitchell Wand. 1987. Macro-by-example: Deriving syntactic transformations from their specifications. In Fourteenth Annual ACM SIGACT-SIGPLAN Symposium on Principles of programming languages. (January).Google Scholar
- Eugene E. Kohlbecker, Jr. 1986. Syntactic Extensions in the Programming Language Lisp. Ph.D. Dissertation. Indiana University. https://help.luddy.indiana.edu/techreports/TRNNN.cgi?trnum=TR199 Archived at Internet Archive: https: //web.archive.org/web/20130522065120/http://repository.readscheme.org/ftp/papers/kohlbecker_phdthesis.pdfGoogle Scholar
- David Kranz. 1988. ORBIT: an optimizing compiler for Scheme. Ph.D. Dissertation. Yale University (Feb). https://cpsc.yale. edu/sites/default/files/files/tr632.pdfGoogle Scholar
- Shriram Krishnamurthi. 1996. RRRS-AUTHORS email with Subject: Generative record types. 23 Apr 1996. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Shriram Krishnamurthi. 2001. Linguistic Reuse. Ph.D. Dissertation. Rice University. https://scholarship.rice.edu/handle/ 1911/17993Google Scholar
- Shriram Krishnamurthi, Matthias Felleisen, and Bruce F. Duba. 2000a. From Macros to Reusable Generative Programming. Technical Report TR 00-364. http://www.ccs.neu.edu/scheme/pubs/tr00- 364.ps.gz (also at Internet Archive 10 Dec. 2005 14:42:23 ).Google Scholar
- Shriram Krishnamurthi, Matthias Felleisen, and Bruce F. Duba. 2000b. From Macros to Reusable Generative Programming. In Generative and Component-Based Software Engineering. GCSE 1999. Lecture Notes in Computer Science, Vol. 1799. 105–120. Google Scholar
Cross Ref
- B. M. Leavenworth. 1966. Syntax macros and extended translation. Commun. ACM 9, 11 (Nov), 790–793.Google Scholar
Digital Library
- Juergen Lorenz. 2009-2020. Mini-tutorial on explicit (and implicit) renaming macros in CHICKEN. non-archival https://wiki.call- cc.org/explicit- renaming- macros#implicit- renaming- macros Archived at https://web.archive.org/web/ 20191026053510/https://wiki.call- cc.org/explicit- renaming- macrosGoogle Scholar
- M. Donald MacLaren. 1969. Macro processing in EPS. SIGPLAN 4, 8 (Aug), 32–36.Google Scholar
- Masinter, van Roggen, and Barrett. 1990. Issue LISP-SYMBOL-REDEFINITION Writeup. Jun 1990. http://clhs.lisp.se/Issues/ iss214_w.htm (also at Internet Archive 6 Sept. 2015 05:31:59 ).Google Scholar
- John McCarthy. 1978. History of Lisp. In History of Programming Languages. ACM (June), 173–185.Google Scholar
- John McCarthy. 1981. History of LISP. In History of Programming Languages, Richard L Wexelblat (Ed.). Academic Press, 173–197.Google Scholar
- John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I. Levin. 1962. Lisp 1.5 Programmer’s Manual. MIT Press.Google Scholar
- James Miller. 1988. RRRS-AUTHORS email with Subject: Standards. 28 Feb 1988. Archived at Internet Archive: https: //web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- John C. Mitchell. 2002. Concepts in Programming Languages. Cambridge University Press.Google Scholar
- Joel Moses. 1970. The function of F UNCTION in LISP or why the F UNARG problem should be called the environment problem. ACM SIGSAM Bulletin 15 (July), 13–27. http://dspace.mit.edu/handle/1721.1/5854Google Scholar
Digital Library
- Fabian Muehlboeck. 2013. Checking binding hygiene statically. Master’s thesis. Northeastern University, Boston, MA. http://hdl.handle.net/2047/d20003134Google Scholar
- Pierre Neron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. 2015. A Theory of Name Resolution. In Programming Languages and Systems - 24th European Symposium on Programming, ESOP 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015. Proceedings. 205–231. Google Scholar
Cross Ref
- Marc Nieper-Wißkirchen. 2016. SRFI 136: Extensible record types. Feb 2016. https://srfi.schemers.org/srfi- 136/ (also at Internet Archive 3 Aug. 2017 10:45:33 ).Google Scholar
- Marc Nieper-Wißkirchen. 2017. SRFI 148: Eager syntax-rules. Aug 2017. https://srfi.schemers.org/srfi- 148/ (also at Internet Archive 2 Aug. 2017 22:33:00 ).Google Scholar
- Marc Nieper-Wißkirchen. 2018. SRFI 150: Hygienic ERR5RS Record Syntax (reduced). Jan 2018. https://srfi.schemers.org/srfi150/ (also at Internet Archive 3 Aug. 2017 10:47:29 ).Google Scholar
- David M. R. Park, Daniel P. Friedman, David S. Wise, and Guy L Steele, Jr (Eds.). 1982. Proceedings of the 1982 ACM Symposium on LISP and Functional Programming, LFP 1980, August 15-18, 1982, Pittsburgh, PA, USA. ACM. https: //dl.acm.org/citation.cfm?id=800068Google Scholar
Digital Library
- Kent Pitman. 1983. The Revised MacLisp Manual (the PitMANUAL, draft #14 ed.). MIT. http://www.maclisp.info/pitmanual/ (also at Internet Archive 18 Feb. 2008 22:55:59 ).Google Scholar
- Justin Pombrio, Shriram Krishnamurthi, and Mitchell Wand. 2017. Inferring scope through syntactic sugar. PACMPL 1, ICFP, 44:1–44:28. Google Scholar
Digital Library
- Francois Pottier. 2007. Static Name Control for FreshML. LICS. Google Scholar
Digital Library
- Vaughan R. Pratt. 1973. Top Down Operator Precedence. In Conference Record of the ACM Symposium on Principles of Programming Languages, Boston, Massachusetts, USA, October 1973, Patrick C. Fischer and Jeffrey D. Ullman (Eds.). ACM Press, 41–51. Google Scholar
Digital Library
- Christian Queinnec and Julian Padget. 1991a. Modules, macros and Lisp. In Computer Science Research and Applications, Ricardo Baeza-Yates and Udi Manber (Eds.). Plenum Publishing Corporation, USA United States (1 10), 109–122. Google Scholar
Cross Ref
- Christian Queinnec and Julian Padget. 1991b. A proposal for a modular Lisp with macros and dynamic evaluation. In Journées de Travail sur l’Analyse Statique en Programmation Équationnelle, Fonctionnelle et Logique. BIGRE: Bulletin d’information du Groupe de recherche sur les outils de conception et d’Ãľcriture des systÃĺmes opÃľratoires (1 10), 1–8. https: //researchportal.bath.ac.uk/en/publications/a- proposal- for- a- modular- lisp- with- macros- and- dynamic- evaluationGoogle Scholar
- Jon Rafkind and Matthew Flatt. 2012. Honu: syntactic extension for algebraic notation through enforestation. In GPCE ’12 Proceedings of the 11th International Conference on Generative Programming and Component Engineering (Dresden, Germany) ( GPCE âĂŹ12). Association for Computing Machinery (Sep), 122âĂŞ131. Google Scholar
Digital Library
- John D. Ramsdell. 1987. RRRS-AUTHORS email with Subject: A vote against standardization. 24 Dec 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan Rees. 1993. Implementing lexically scoped macros. ACM SIGPLAN Lisp Pointers.Google Scholar
- Jonathan Rees. (no date). The T Project. non-archival http://mumble.net/~jar/tproject/ (also at Internet Archive 28 Nov. 2019 02:31:52 ).Google Scholar
- Jonathan Rees and William Clinger. 1986. The revised 3 report on the algorithmic language Scheme. ACM SIGPLAN Notices 21, 12 (December), 37–79.Google Scholar
Digital Library
- Jonathan Rees and William Clinger. 2013a. Scheme Working Group 1. non-archival http://www.scheme- reports.org/ 2015/working- group- 1.html (also at Internet Archive 3 July 2019 11:41:55 ).Google Scholar
- Jonathan Rees and William Clinger. 2013b. Scheme Working Group 2. non-archival http://www.scheme- reports.org/ 2015/working- group- 2.html (also at Internet Archive 31 Dec. 2019 22:51:39 ).Google Scholar
- Jonathan Rees, Olin Shivers, William Clinger, Marc Feeley, and Chris Hanson. 2010a. Charter for working group 1. 20 Jan 2010. non-archival http://www.scheme- reports.org/2009/working- group- 1- charter.html (also at Internet Archive 17 April 2019 12:12:40 ).Google Scholar
- Jonathan Rees, Olin Shivers, William Clinger, Marc Feeley, and Chris Hanson. 2010b. Charter for working group 2. 3 Mar 2010. non-archival http://www.scheme- reports.org/2009/working- group- 2- charter.html (also at Internet Archive 26 Oct. 2019 05:20:46 ).Google Scholar
- Jonathan A Rees. 1987a. RRRS-AUTHORS email with Subject: a modest macro proposal. 28 Mar 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan A Rees. 1987b. RRRS-AUTHORS email with Subject: macros. 7 Apr 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan A Rees. 1987c. RRRS-AUTHORS email with Subject: macros. 10 Apr 1987. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan A Rees. 1988a. RRRS-AUTHORS email with Subject: DO in Scheme. 16 Feb 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan A Rees. 1988b. RRRS-AUTHORS email with Subject: opaque type proposal. 26 May 1988. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Jonathan A. Rees and Norman I. Adams, IV. 1982. T: a dialect of Lisp or, Lambda: the ultimate software tool. In Proceedings of the 1982 ACM Symposium on LISP and Functional Programming (Pittsburgh, Pennsylvania, USA) (LFP âĂŹ82). Association for Computing Machinery (Aug), 114–122. Google Scholar
Digital Library
- Guillermo J. Rozas. 1996. RRRS-AUTHORS email with Subject: Re: Generative record types. 24 Apr 1996. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- ISO SC22/WG16. 1997. Programming Language ISLISP: ISLISP Working Draft 20.3 (Public Domain). http://islisp.info/ Documents/PDF/islisp- 1997- 03- 31- pd- v20.pdfGoogle Scholar
- Scala. (no date). The Scala Programming Language. non-archival https://www.scala- lang.org/ (also at Internet Archive 30 June 2019 22:36:28 ).Google Scholar
- Alex Shinn. 2011. initial results of implementor intention poll. Posted to scheme-reports. 23 Oct 2011. non-archival http://www.scheme- reports.org/mail/scheme- reports/msg00372.html (also at Internet Archive 9 March 2020 17:08:27 ).Google Scholar
- Alex Shinn. 2017. Re: apparent bug in sample implementation of SRFI 148. Posted to SRFI 148 discussion list. 20 Jul 2017. non-archival https://srfi- email.schemers.org/srfi- 148/msg/6102883/ (also at Internet Archive 7 March 2020 18:27:32 ).Google Scholar
- Alex Shinn, John Cowan, and Arthur A Gleckler. 2013. Revised 7 report on the algorithmic language Scheme. July 2013. non-archival https://bitbucket.org/cowan/r7rs/raw/4c27517de187142ad2cf4bcd8cb9199ae1e48c09/rnrs/r7rs- official.pdf (also at Internet Archive 31 Dec. 2019 22:51:38 ).Google Scholar
- Olin Shivers. (no date). History of T. non-archival http://www.paulgraham.com/thist.html (also at Internet Archive 23 Feb. 2020 06:29:59 ).Google Scholar
- Olin Shivers, William Clinger, Marc Feeley, Chris Hanson, and Jonathan Rees. 2009. Scheme Steering Committee Position Statement. 20 Aug 2009. non-archival http://scheme- reports.org/2009/position- statement.html (also at Internet Archive 21 July 2019 21:27:35 ).Google Scholar
- Michael Sperber. 2012. Formal Response #456: Adoption of R6RS. Posted to scheme-reports. 13 Oct 2012. non-archival http://www.scheme- reports.org/mail/scheme- reports/msg00945.html (also at Internet Archive 9 March 2020 17:32:16 ).Google Scholar
- Michael Sperber, William Clinger, R. Kent Dybvig, Matthew Flatt, and Anton van Straaten. 2007. Revised 5 .97 report on the algorithmic language Scheme—Standard Libraries. 30 Jun 2007. non-archival http://www.r6rs.org/versions/r5.97rslib.pdf (also at Internet Archive 28 Sept. 2018 12:20:57 ). This draft was ratified with only minor changes.Google Scholar
- Michael Sperber, R. Kent Dybvig, Matthew Flatt, and Anton van Straaten. 2009a. Revised 6 report on the algorithmic language Scheme. Journal of Functional Programming 19, S1 (August), 1–301. http://www.r6rs.org/final/r6rs.pdf (also at Internet Archive 29 Dec. 2019 12:53:33 ). HTML version at non-archival http://www.r6rs.org/Google Scholar
Digital Library
- Michael Sperber, R. Kent Dybvig, Matthew Flatt, and Anton van Straaten. 2009b. Revised 6 report on the algorithmic language Scheme—Standard Libraries. Journal of Functional Programming 19, S1 (August), 1–301. non-archival http://www.r6rs.org/final/r6rs- lib.pdf (also at Internet Archive 29 Dec. 2019 12:53:33 ). HTML version at non-archival http://www.r6rs.org/Google Scholar
Digital Library
- Paul Stansifer. 2016. Flexible binding-safe programming. Ph.D. Dissertation. Northeastern University. https://repository. library.northeastern.edu/files/neu:cj82mb52hGoogle Scholar
- Paul Stansifer and Mitchell Wand. 2014. Romeo: a system for more flexible binding-safe programming. In Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, Gothenburg, Sweden, September 1-3, 2014. 53–65. Google Scholar
Digital Library
- Paul Stansifer and Mitchell Wand. 2016. Romeo: A system for more flexible binding-safe programming. J. Funct. Program. 26, e13. Google Scholar
Cross Ref
- Paul Steckler and Mitchell Wand. 1994. Selective Thunkification. In International Static Analysis Symposium. 162–178. Google Scholar
Cross Ref
- Guy Lewis Steele, Jr. 1977. RABBIT: a compiler for Scheme. Master’s thesis. MIT (May). Published as MIT AI Memo 474 [ Steele 1978 ].Google Scholar
- Guy Lewis Steele, Jr. 1978. RABBIT: a compiler for Scheme. Technical Report 474. (May). https://dspace.mit.edu/handle/1721. 1/6913 . Also at ftp://publications.ai.mit.edu/ai- publications/pdf/AITR- 474.pdf . MIT AI Memo 474.Google Scholar
- Guy L. Steele, Jr. 1982. An Overview of Common Lisp. In Proceedings of the 1982 ACM Symposium on LISP and Functional Programming (Pittsburgh, Pennsylvania, USA) (LFP âĂŹ82). Association for Computing Machinery (Aug), 98–107. Google Scholar
Digital Library
- Guy L. Steele, Jr. 1990. Common Lisp the Language, 2nd Edition. Digital Press. https://www.cs.cmu.edu/Groups/AI/html/ cltl/clm/clm.htmlGoogle Scholar
- Guy L. Steele, Jr., Scott E. Fahlman, Richard P. Gabriel, David A. Moon, and Daniel L. Weinreb. 1984. Common Lisp the Language. Digital Press.Google Scholar
- Guy L. Steele, Jr. and Richard P. Gabriel. 1993a. The evolution of Lisp. In HOPL-II The second ACM SIGPLAN conference on History of programming languages. ACM (April), 231–270.Google Scholar
- Guy L. Steele, Jr. and Richard P. Gabriel. 1993b. The evolution of Lisp. non-archival https://www.dreamsongs.com/Files/ HOPL2- Uncut.pdf (also at Internet Archive 20 Dec. 2019 13:43:27 ). “Uncut” draft of Steele and Gabriel [ 1993a ].Google Scholar
- Guy Lewis Steele, Jr. and Gerald Jay Sussman. 1978. The revised report on Scheme, a dialect of Lisp. MIT AI Memo 452 (January). https://dspace.mit.edu/handle/1721.1/6283Google Scholar
- Gerald Jay Sussman and Guy Lewis Steele, Jr. 1975. Scheme: an interpreter for extended lambda calculus. Technical Report 349. (Dec). https://dspace.mit.edu/handle/1721.1/5794 MIT AI Memo 349. See also the journal version [ Sussman and Steele 1998 ].Google Scholar
- Gerald Jay Sussman and Guy Lewis Steele, Jr. 1998. Scheme: an interpreter for extended lambda calculus, Vol. 11. (Dec), Higher-Order and Symbolic Computation 11. Google Scholar
Digital Library
- Walid Taha and Patricia Johann. 2003. Staged Notational Definitions. In Generative Programming and Component Engineering, Second International Conference, GPCE 2003, Erfurt, Germany, September 22-25, 2003, Proceedings. 97–116. Google Scholar
Cross Ref
- Warren Teitelman. 1974. INTERLISP Reference Manual. Xerox PARC and BBN. http://www.softwarepreservation.org/ projects/LISP/interlisp/Interlisp- Oct_1974.pdf/viewGoogle Scholar
- André van Tonder. 2005a. SRFI 57: Records. Mar 2005. https://srfi.schemers.org/srfi- 57/ (also at Internet Archive 3 Aug. 2017 01:24:35 ).Google Scholar
- André van Tonder. 2005b. SRFI 72: Hygienic Macros. Sep 2005. https://srfi.schemers.org/srfi- 72/ (also at Internet Archive 3 Aug. 2017 13:09:43 ).Google Scholar
- André van Tonder. 2007a. r6rs-discuss email of 26 Jun 2007. Subject: Rationale issues. 26 Jun 2007. non-archival http://lists.r6rs.org/pipermail/r6rs- discuss/2007- June/002825.html (also at Internet Archive 5 July 2008 18:17:28 ).Google Scholar
- André van Tonder. 2007b. Formal comment #276: Rationale 15.1. 27 Jun 2007. non-archival http://www.r6rs.org/formalcomments/comment- 276.txt (also at Internet Archive 5 July 2008 20:20:05 ).Google Scholar
- André van Tonder. (no date). R6RS Libraries and Macros. non-archival http://www.het.brown.edu/people/andre/macros/ (also at Internet Archive 26 Sept. 2019 06:39:25 ).Google Scholar
- R. Mark Volkmann. 2009. Clojure—Functional Programming for the JVM. March 2009. https://objectcomputing.com/resources/publications/sett/march- 2009- clojure- functional- programming- for- the- jvm (also at Internet Archive 7 March 2020 20:42:35 ).Google Scholar
- Oscar Waddell. 1999. Extending the Scope of Syntactic Abstraction. Ph.D. Dissertation. Indiana University Computer Science Department (August). non-archival http://www.cs.indiana.edu/~owaddell/papers/thesis.ps.gzGoogle Scholar
- Oscar Waddell and R. Kent Dybvig. 1999. Extending the Scope of Syntactic Abstraction. In Conference Record of POPL’99: The 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. (January).Google Scholar
- Ken Wakita, Kanako Homizu, and Akira Sasaki. 2014. Hygienic Macro System for JavaScript and Its Light-Weight Implementation Framework. In Proceedings of ILC 2014 on 8th International Lisp Conference (Montreal, QC, Canada) (ILC âĂŹ14). Association for Computing Machinery, 12âĂŞ21. Google Scholar
Digital Library
- Mitchell Wand. 1984a. RRRS-AUTHORS email with Subject: Revised invitation list. 16 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Mitchell Wand. 1984b. RRRS-AUTHORS email with Subject: Scheme meeting. 10 Oct 1984. Archived at Internet Archive: https://web.archive.org/web/20100413124637/https://groups.csail.mit.edu/mac/ftpdir/scheme- mail/Google Scholar
- Gerald M. Weinberg. 1985. The Psychology of Computer Programming. John Wiley and Sons.Google Scholar
Digital Library
- Daniel Weinreb and David Moon. 1981. Lisp Machine Manual (third ed.). MIT. Second edition at http://www. softwarepreservation.org/projects/LISP/MIT/Weinreb_Moon- Lisp_Machine_Manual_Jan_1979.pdf/viewGoogle Scholar
- Joseph Weizenbaum. 1968. The Funarg Problem Explained. http://www.softwarepreservation.org/projects/LISP/MIT/ Weizenbaum- F UNARG_Problem_Explained- 1968.pdfGoogle Scholar
- David Bartley. 1984a. Sep 1984. Email of 14 September 1984, sent to members of the agenda committee.Google Scholar
- David Bartley. 1984b. TI-CSL Position on “Standardizing” SCHEME. Oct 1984. Email of 17 October 1984.Google Scholar
- Matthias Blume. 1995. Refining Hygienic Macros for Modules and Separate Compilation. Technical Report ATR Technical Report TR-H-171. http://ttic.uchicago.edu/~blume/papers/hygmac.pdfGoogle Scholar
- John Clements. 2020. Personal communication.Google Scholar
- William Clinger and Felix S Klock, II. 2007. ANN: Larceny v0.95 “First Safety”. Posted to the comp.lang.scheme newsgroup. 8 Nov 2007. non-archival https://groups.google.com/d/msg/comp.lang.scheme/fUVX1SYurOQ/MHq4- 6DFofoJGoogle Scholar
- William D Clinger. 1984a. Aug 1984. A long note, dated 28 August 1984, sent to the six members of the agenda committee before the 1984 meeting at Brandeis, listing known differences between T, Scheme 84, Scheme 312, and MIT Scheme.Google Scholar
- William D Clinger. 1984b. Sep 1984. Email of September 1984, responding to [na Bartley 1984a ].Google Scholar
- William D Clinger. 1984c. Oct 1984. Agenda for the October 1984 meeting at Brandeis.Google Scholar
- William D Clinger. 1984d. Oct 1984. Email to Mitchell Wand on 27 Oct 1984 listing answers to questions considered at the workshop.Google Scholar
- William D Clinger. 1998. my notes from the Scheme workshop at ICFP98. Posted to comp.lang.scheme. 19 Oct 1998.Google Scholar
- John Cowan. 2019. Tangerine Edition final results available. Posted to scheme-reports-wg1. 2 Feb 2019. non-archival https://groups.google.com/d/msg/scheme- reports- wg1/Vk8oqyUoLHg/pWW14lcuGAAJGoogle Scholar
- John Cowan, Will Clinger, Marc Nieper-Wißkirchen, and Alex Shinn. 2016. R7RS-large discussion: Miscellaneous. Posted to scheme-reports-wg2 (Google Groups). Jun 2016. non-archival https://groups.google.com/d/topic/scheme- reportswg2/oKuhgwaM45w/discussion This thread was dominated by the controversy described in Section 14.1 .Google Scholar
- Justin Ethier. 2013. 10 Sep 2013. non-archival https://stackoverflow.com/questions/18713254/is- there- a- digest- fordifferent- rnrs- scheme- standards Answer given at Stack Overflow on 10 Sep 2013 to the question “Is there a digest for different ’RnRS’ Scheme standards?”.Google Scholar
- Carol Fessenden, William Clinger, Daniel P Friedman, and Christopher Haynes. 1983. Scheme 311 version 4 reference manual. Technical Report 137. Indiana University Computer Science Department (Feb).Google Scholar
- John K. Foderaro. 1980. The Franz Lisp Manual: a document in four movements.Google Scholar
- Daniel P. Friedman, Christopher Haynes, Eugene Kohlbecker, and Mitchell Wand. 1984. Scheme 84 Reference Manual Version 0. Technical Report 153. (Feb). This version of TR 153 was superseded almost a year later by an “interim” manual that was also published as TR 153.Google Scholar
- Daniel P. Friedman, Christopher Haynes, Eugene Kohlbecker, and Mitchell Wand. 1985. Scheme 84 Interim Reference Manual. Technical Report 153. (Jan). This version of TR 153 was published almost a year after the previous version of TR 153, Version 0.Google Scholar
- Abdulaziz Ghuloum. 2007. [ANN] Initial release of Ikarus—the compiler of choice for R6RS hackers. Posted to the comp.lang.scheme newsgroup. 31 Oct 2007. non-archival https://groups.google.com/d/msg/comp.lang.scheme/ TrR5TmBUDAo/sknYDNQlVu8JGoogle Scholar
- Lars Thomas Hansen. 1992. The Impact of Programming Style on the Performance of Scheme Programs. Master’s thesis. University of Oregon (Aug).Google Scholar
- Chris Hanson. 1984. Oct 1984. Email of 4 October 1984, responding to [na Bartley 1984a ] and [na Clinger 1984b ].Google Scholar
- Chris Hanson. 1986-2019. MIT/GNU Scheme. non-archival https://www.gnu.org/software/mit- scheme/Google Scholar
- Secretariat ISO/JTC1/SC22. 1988. Draft Report of the first meeting of SC22/WG16-Lisp held in Paris France on 1988-02-24/25. Apr 1988. SC22 N494, cross referencing SC22 N453.Google Scholar
- Eugene Kohlbecker. 1984. Position Statement on Macros. Dated 19 October 1984, marked DRAFT, and apparently never published or posted to any mailing list.Google Scholar
- Steve Lawler. 2004. R4Rs [ sic] vs. R5RS. Posted to a newsgroup. 2 Jun 2004. non-archival http://computer- programmingforum.com/40- scheme/e431f99fab9fd6fe.htm As far as I can gather, the big differences b/n R4 and R5 are the addition of hygienic macros. . .Google Scholar
- Lightship Software. 1985-1990. MacScheme. Lightship Software.Google Scholar
- Marco Maggi. 2016a. Hard choices, R6RS, harder to write code. 5 Dec 2016. non-archival http://marcomaggi.github.io/ weblog/weblog- 2016/Dec- 05.html#Dec- 05 These changes will make some fully compatible r6rs code not to compile anymore or raise runâĂŞtime errors. Life is hard.Google Scholar
- Marco Maggi. 2016b. On naming Vicare. 7 Dec 2016. non-archival http://marcomaggi.github.io/weblog/weblog- 2016/Dec07.html#Dec- 07 But the future of Vicare lies with the typed language, which has incompatibilities with the r6rs language that was the official one in Vicare.Google Scholar
- MIT. 1981. MIT Scheme, Version 1.Google Scholar
- Ronald B. Ohlander. 1984. Workshop on Common Lisp. Invitation mailed to ‘key language designers, hardware manufacturers, and research groups’. 16 Aug 1984.Google Scholar
- Al Petrofsky. 1991. How to write seemingly unhygienic macros using syntax-rules. Posted to the comp.lang.scheme newsgroup. 19 Nov 1991. https://groups.google.com/d/msg/comp.lang.scheme/wyYJ5PwSxSM/cZ9Lrj3ROFQJGoogle Scholar
- Al Petrofsky. 1992. Holey macros! (was Re: choice for embedding Scheme implementation?). Posted to the comp.lang.scheme newsgroup. 22 May 1992. non-archival https://groups.google.com/d/msg/comp.lang.scheme/KM3P9QAOsqQ/ kWiOThjr7IwJGoogle Scholar
- Kent Pitman. 1984. Oct 1984. Email of 16 October 1984, listing questions to be resolved at the Brandeis meeting.Google Scholar
- Christian Queinnec and Julian Padget. 1990. A deterministic model for modules and macros. Technical Report 90-36. http://pagesperso- systeme.lip6.fr/Christian.Queinnec/Papers/modmac2.ps.gzGoogle Scholar
- Jonathan Rees. 1989. Modular Macros. Master’s thesis. MIT.Google Scholar
- Jonathan A. Rees, Norman I. Adams, IV, and James R Meehan. 1984. The T Manual (4th ed.). Technical Report. Yale University Computer Science (Jan).Google Scholar
- Brian Reistad. 1992. Macros That Work in Modula-2. 5 Oct 1992. Undergraduate research project at the University of Oregon.Google Scholar
- Grant Rettke. 2008a. Re: Was there a schism between R4RS and R5RS? Posted to comp.lang.scheme. 9 Oct 2008. nonarchival https://groups.google.com/d/msg/comp.lang.scheme/KXVg8WRDI- M/fdEdFzQW_KQJ Timeline of macro research from R4RS to R5RS.Google Scholar
- Grant Rettke. 2008b. Was there a schism between R4RS and R5RS? Posted to comp.lang.scheme. 6 Oct 2008. non-archival https://groups.google.com/d/msg/comp.lang.scheme/KXVg8WRDI- M/KLIGBcFpzFAJ R4RS only suggested macros, though, and didn’t include them in the standard. Why then, did they get added to the standard in R5RS?. . . macros seem like a “big” addition.Google Scholar
- Alex Shinn. 2010. welcome to working group 1. Posted to scheme-reports-wg1. 9 Feb 2010. non-archival https: //groups.google.com/d/msg/scheme- reports- wg1/Dh6avGU4rqI/F7Xw_qkpa4wJGoogle Scholar
- Jens Axel Soegaard. 2008. Re: Was there a schism between R4RS and R5RS? Posted to comp.lang.scheme. 6 Oct 2008. non-archivalGoogle Scholar
- Paul Stansifer. 2016. GitHub comment. 24 May 2016. non-archival https://github.com/rust- lang/rfcs/pull/1561 Gives an example of a macro-defining macro in Rust.Google Scholar
- Texas Instruments. 1987. PC Scheme source code.Google Scholar
- Texas Instruments. 1990. PC Scheme User Guide and Software (trade edition ed.). MIT Press.Google Scholar
Index Terms
Hygienic macro technology
Recommendations
Hygienic quasiquotation in scheme
Scheme '12: Proceedings of the 2012 Annual Workshop on Scheme and Functional ProgrammingQuasiquotation in Scheme is nearly ideal for implementing programs that generate other programs. These programs lack only the ability to generate fresh bound identifiers, as required to make such code-manipulating programs hygienic, but any Scheme ...
Revised Report on the Algorithmic Language Scheme
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele, Jr. and Gerald Jay Sussman. It was designed to have ...
Hygienic Macro System for JavaScript and Its Light-weight Implementation Framework
ILC '14: Proceedings of ILC 2014 on 8th International Lisp ConferenceIn spite of its soundness, ease of use, and descriptive power, few hygienic macro systems have been incorporated to non-LISP programming languages. The difficulty lies in the self-describing nature of the macro system. Proposed is the design and a ...






Comments