Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

Hygienic macro technology

Published: 12 June 2020 Publication History

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.

References

[1]
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.
[2]
Martín Abadi, Luca Cardelli, Pierre-Louis Curien, and Jean-Jacques Lévy. 1991. Explicit Substitutions. J. Funct. Program. 1, 4, 375–416.
[3]
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/
[4]
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/
[5]
Harold Abelson, Gerald Jay Sussman, and with Julie Sussman. 1985. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, MA.
[6]
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.
[7]
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/
[8]
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/
[9]
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.
[10]
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.
[11]
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/main
[12]
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.
[13]
H. P. Barendregt. 1985. The Lambda Calculus—Its Syntax and Semantics. Number 103 in Studies in Logic and the Foundations of Mathematics. North-Holland.
[14]
H. P. Barendregt. 1992. Lambda calculi with types. In Handbook of Logic in Computer Science (Volume 2). Oxford University Press, 117–309.
[15]
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/
[16]
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/
[17]
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/
[18]
David Bartley, Chris Hanson, and Jim Miller. 1991. IEEE Standard for the Scheme Programming Language. IEEE. 1178-1990.
[19]
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/
[20]
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 ).
[21]
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 ).
[22]
Alan Bawden and Jonathan Rees. 1988. Syntactic closures. In Proceedings of the 1988 ACM Conference on Lisp and Functional Programming. ACM (July), 86–95.
[23]
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 ).
[24]
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 ).
[25]
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 ).
[26]
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 ).
[27]
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 ).
[28]
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.
[29]
Ana Bove and Laura Arbilla. 1992. A confluent calculus of Macro expansion and evaluation. In 1992 ACM Conference on LISP and Functional Programming.
[30]
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 ).
[31]
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/
[32]
P. J. Brown. 1974. Macro Processors and Techniques for Portable Software. Wiley.
[33]
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 ).
[34]
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 ).
[35]
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/
[36]
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.
[37]
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.
[38]
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/
[39]
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/
[40]
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/
[41]
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/
[42]
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/
[43]
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/
[44]
William Clinger. 1988a. The June 1987 Meeting. ACM SIGPLAN Lisp Pointers I, 5 (Dec-Jan-Feb-Mar), 25–27.
[45]
William Clinger. 1988b. Standardization at Snowbird. ACM SIGPLAN Lisp Pointers II, 2 (Oct-Nov-Dec), 43–47.
[46]
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/
[47]
William Clinger. 1991a. Hygienic macros through explicit renaming. ACM SIGPLAN Lisp Pointers IV, 4 (Oct-Nov-Dec), 25–28.
[48]
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 ).
[49]
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/
[50]
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/
[51]
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/5600
[52]
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 ).
[53]
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 ).
[54]
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.
[55]
William Clinger and Jonathan Rees. 1991b. The revised 4 report on the algorithmic language Scheme. ACM Lisp Pointers 4, 3, 1–55.
[56]
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 ).
[57]
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 ).
[58]
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 ].
[59]
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.
[60]
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.
[61]
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 ).
[62]
William D Clinger. 2008. Scheme@33. In LISP50: Celebrating the 50th Anniversary of Lisp (Nashville, Tennessee) (LISP50). Association for Computing Machinery, New York, NY, USA, Article Article 7, 5 pages.
[63]
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 ).
[64]
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.pdf
[65]
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 ).
[66]
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 ).
[67]
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 ).
[68]
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 ).
[69]
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 ).
[70]
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 ).
[71]
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.
[72]
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 ).
[73]
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 ).
[74]
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 ).
[75]
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 ).
[76]
Ryan Culpepper and Matthias Felleisen. 2004. Taming Macros. In Generative Programming and Component Engineering (GPCE 2004). (October).
[77]
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).
[78]
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/
[79]
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.
[80]
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.
[81]
Timothy Charles Disney. 2015. Hygienic Macros for JavaScript. Ph.D. Dissertation. UC Santa Cruz.
[82]
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/
[83]
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 ).
[84]
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 ).
[85]
R. Kent Dybvig. 1987. The Scheme Programming Language. Prentice Hall.
[86]
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.pdf
[87]
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/
[88]
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/
[89]
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/
[90]
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/
[91]
R. Kent Dybvig. 2000. From Macrogeneration to Syntactic Abstraction. Higher Order Symbol. Comput. 13, 1âĂŞ-2 (April), 57âĂŞ63.
[92]
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 ].
[93]
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.
[94]
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).
[95]
R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. 1993. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5, 4 (December).
[96]
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 ).
[97]
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.
[98]
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 ).
[99]
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.
[100]
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. html
[101]
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 ).
[102]
Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. MIT Press, Cambridge, MA.
[103]
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.
[104]
Matthew Flatt. 2002. Composable and Compilable Macros: You Want it When?. In International Conference on Functional Programming (ICFP’2002).
[105]
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.
[106]
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.
[107]
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 ).
[108]
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/
[109]
Murdoch Gabbay and Andrew M. Pitts. 2002. A New Approach to Abstract Syntax with Variable Binding. Formal Asp. Comput. 13, 3-5, 341–363.
[110]
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/
[111]
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/
[112]
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.
[113]
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.
[114]
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.html
[115]
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.
[116]
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 ).
[117]
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 ).
[118]
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 ).
[119]
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.
[120]
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/
[121]
Chris Hanson. 1991. A Syntactic Closures Macro Facility. ACM SIGPLAN Lisp Pointers IV, 4 (December).
[122]
Timothy P. Hart. 1963. MACRO Definitions for LISP. Technical Report 57. (Oct). https://dspace.mit.edu/handle/1721.1/6111
[123]
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/
[124]
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/
[125]
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/
[126]
David Herman. 2010. A Theory of Typed Hygienic Macros. Ph.D. dissertation. Northeastern University, Boston, Massachusetts (May).
[127]
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.
[128]
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. gz
[129]
IEEE. 2008. IEEE 1178-1990-IEEE Standard for the Scheme Programming Language. https://standards.ieee.org/standard/1178-1990.html
[130]
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 ).
[131]
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.pdf
[132]
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.
[133]
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 ).
[134]
Richard Kelsey. 1989. Compilation by Program Transformation. Ph.D. Dissertation. Yale University (May).
[135]
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 ).
[136]
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.
[137]
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.
[138]
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 ).
[139]
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-archival
[140]
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 ).
[141]
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.
[142]
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).
[143]
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.pdf
[144]
David Kranz. 1988. ORBIT: an optimizing compiler for Scheme. Ph.D. Dissertation. Yale University (Feb). https://cpsc.yale. edu/sites/default/files/files/tr632.pdf
[145]
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/
[146]
Shriram Krishnamurthi. 2001. Linguistic Reuse. Ph.D. Dissertation. Rice University. https://scholarship.rice.edu/handle/ 1911/17993
[147]
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 ).
[148]
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.
[149]
B. M. Leavenworth. 1966. Syntax macros and extended translation. Commun. ACM 9, 11 (Nov), 790–793.
[150]
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- macros
[151]
M. Donald MacLaren. 1969. Macro processing in EPS. SIGPLAN 4, 8 (Aug), 32–36.
[152]
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 ).
[153]
John McCarthy. 1978. History of Lisp. In History of Programming Languages. ACM (June), 173–185.
[154]
John McCarthy. 1981. History of LISP. In History of Programming Languages, Richard L Wexelblat (Ed.). Academic Press, 173–197.
[155]
John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I. Levin. 1962. Lisp 1.5 Programmer’s Manual. MIT Press.
[156]
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/
[157]
John C. Mitchell. 2002. Concepts in Programming Languages. Cambridge University Press.
[158]
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/5854
[159]
Fabian Muehlboeck. 2013. Checking binding hygiene statically. Master’s thesis. Northeastern University, Boston, MA. http://hdl.handle.net/2047/d20003134
[160]
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.
[161]
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 ).
[162]
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 ).
[163]
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 ).
[164]
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=800068
[165]
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 ).
[166]
Justin Pombrio, Shriram Krishnamurthi, and Mitchell Wand. 2017. Inferring scope through syntactic sugar. PACMPL 1, ICFP, 44:1–44:28.
[167]
Francois Pottier. 2007. Static Name Control for FreshML. LICS.
[168]
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.
[169]
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.
[170]
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- evaluation
[171]
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.
[172]
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/
[173]
Jonathan Rees. 1993. Implementing lexically scoped macros. ACM SIGPLAN Lisp Pointers.
[174]
Jonathan Rees. (no date). The T Project. non-archival http://mumble.net/~jar/tproject/ (also at Internet Archive 28 Nov. 2019 02:31:52 ).
[175]
Jonathan Rees and William Clinger. 1986. The revised 3 report on the algorithmic language Scheme. ACM SIGPLAN Notices 21, 12 (December), 37–79.
[176]
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 ).
[177]
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 ).
[178]
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 ).
[179]
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 ).
[180]
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/
[181]
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/
[182]
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/
[183]
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/
[184]
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/
[185]
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.
[186]
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/
[187]
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.pdf
[188]
Scala. (no date). The Scala Programming Language. non-archival https://www.scala- lang.org/ (also at Internet Archive 30 June 2019 22:36:28 ).
[189]
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 ).
[190]
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 ).
[191]
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 ).
[192]
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 ).
[193]
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 ).
[194]
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 ).
[195]
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.
[196]
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/
[197]
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/
[198]
Paul Stansifer. 2016. Flexible binding-safe programming. Ph.D. Dissertation. Northeastern University. https://repository. library.northeastern.edu/files/neu:cj82mb52h
[199]
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.
[200]
Paul Stansifer and Mitchell Wand. 2016. Romeo: A system for more flexible binding-safe programming. J. Funct. Program. 26, e13.
[201]
Paul Steckler and Mitchell Wand. 1994. Selective Thunkification. In International Static Analysis Symposium. 162–178.
[202]
Guy Lewis Steele, Jr. 1977. RABBIT: a compiler for Scheme. Master’s thesis. MIT (May). Published as MIT AI Memo 474 [ Steele 1978 ].
[203]
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.
[204]
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.
[205]
Guy L. Steele, Jr. 1990. Common Lisp the Language, 2nd Edition. Digital Press. https://www.cs.cmu.edu/Groups/AI/html/ cltl/clm/clm.html
[206]
Guy L. Steele, Jr., Scott E. Fahlman, Richard P. Gabriel, David A. Moon, and Daniel L. Weinreb. 1984. Common Lisp the Language. Digital Press.
[207]
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.
[208]
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 ].
[209]
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/6283
[210]
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 ].
[211]
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.
[212]
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.
[213]
Warren Teitelman. 1974. INTERLISP Reference Manual. Xerox PARC and BBN. http://www.softwarepreservation.org/ projects/LISP/interlisp/Interlisp- Oct_1974.pdf/view
[214]
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 ).
[215]
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 ).
[216]
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 ).
[217]
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 ).
[218]
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 ).
[219]
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 ).
[220]
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.gz
[221]
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).
[222]
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.
[223]
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/
[224]
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/
[225]
Gerald M. Weinberg. 1985. The Psychology of Computer Programming. John Wiley and Sons.
[226]
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/view
[227]
Joseph Weizenbaum. 1968. The Funarg Problem Explained. http://www.softwarepreservation.org/projects/LISP/MIT/ Weizenbaum- F UNARG_Problem_Explained- 1968.pdf
[228]
David Bartley. 1984a. Sep 1984. Email of 14 September 1984, sent to members of the agenda committee.
[229]
David Bartley. 1984b. TI-CSL Position on “Standardizing” SCHEME. Oct 1984. Email of 17 October 1984.
[230]
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.pdf
[231]
John Clements. 2020. Personal communication.
[232]
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- 6DFofoJ
[233]
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.
[234]
William D Clinger. 1984b. Sep 1984. Email of September 1984, responding to [na Bartley 1984a ].
[235]
William D Clinger. 1984c. Oct 1984. Agenda for the October 1984 meeting at Brandeis.
[236]
William D Clinger. 1984d. Oct 1984. Email to Mitchell Wand on 27 Oct 1984 listing answers to questions considered at the workshop.
[237]
William D Clinger. 1998. my notes from the Scheme workshop at ICFP98. Posted to comp.lang.scheme. 19 Oct 1998.
[238]
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/pWW14lcuGAAJ
[239]
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 .
[240]
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?”.
[241]
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).
[242]
John K. Foderaro. 1980. The Franz Lisp Manual: a document in four movements.
[243]
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.
[244]
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.
[245]
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/sknYDNQlVu8J
[246]
Lars Thomas Hansen. 1992. The Impact of Programming Style on the Performance of Scheme Programs. Master’s thesis. University of Oregon (Aug).
[247]
Chris Hanson. 1984. Oct 1984. Email of 4 October 1984, responding to [na Bartley 1984a ] and [na Clinger 1984b ].
[248]
Chris Hanson. 1986-2019. MIT/GNU Scheme. non-archival https://www.gnu.org/software/mit- scheme/
[249]
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.
[250]
Eugene Kohlbecker. 1984. Position Statement on Macros. Dated 19 October 1984, marked DRAFT, and apparently never published or posted to any mailing list.
[251]
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. . .
[252]
Lightship Software. 1985-1990. MacScheme. Lightship Software.
[253]
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.
[254]
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.
[255]
MIT. 1981. MIT Scheme, Version 1.
[256]
Ronald B. Ohlander. 1984. Workshop on Common Lisp. Invitation mailed to ‘key language designers, hardware manufacturers, and research groups’. 16 Aug 1984.
[257]
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/cZ9Lrj3ROFQJ
[258]
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/ kWiOThjr7IwJ
[259]
Kent Pitman. 1984. Oct 1984. Email of 16 October 1984, listing questions to be resolved at the Brandeis meeting.
[260]
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.gz
[261]
Jonathan Rees. 1989. Modular Macros. Master’s thesis. MIT.
[262]
Jonathan A. Rees, Norman I. Adams, IV, and James R Meehan. 1984. The T Manual (4th ed.). Technical Report. Yale University Computer Science (Jan).
[263]
Brian Reistad. 1992. Macros That Work in Modula-2. 5 Oct 1992. Undergraduate research project at the University of Oregon.
[264]
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.
[265]
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.
[266]
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_qkpa4wJ
[267]
Jens Axel Soegaard. 2008. Re: Was there a schism between R4RS and R5RS? Posted to comp.lang.scheme. 6 Oct 2008. non-archival
[268]
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.
[269]
Texas Instruments. 1987. PC Scheme source code.
[270]
Texas Instruments. 1990. PC Scheme User Guide and Software (trade edition ed.). MIT Press.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 4, Issue HOPL
June 2020
1524 pages
EISSN:2475-1421
DOI:10.1145/3406494
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 June 2020
Online AM: 07 May 2020
Published in PACMPL Volume 4, Issue HOPL

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Lisp
  2. Scheme
  3. hygiene
  4. macro

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 4,269
    Total Downloads
  • Downloads (Last 12 months)768
  • Downloads (Last 6 weeks)79
Reflects downloads up to 30 Aug 2024

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media