1. 6

Details at https://popl23.sigplan.org/details/PADL-2023-papers/20/Modern-Macros

  1.  

  2. 7

    If anyone is interested in the papers referenced at the beginning of the talk:

    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 (LFP ’86). Association for Computing Machinery, New York, NY, USA, 151–161. https://doi.org/10.1145/319838.319859

    William Clinger and Jonathan Rees. 1991. Macros that work. In Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL ’91). Association for Computing Machinery, New York, NY, USA, 155–162. https://doi.org/10.1145/99583.99607

    R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. 1992. Syntactic abstraction in Scheme. Lisp Symb. Comput. 5, 4 (Dec. 1992), 295–326. https://doi.org/10.1007/BF01806308

    Matthew Flatt. 2002. Composable and compilable macros: you want it when? In Proceedings of the seventh ACM SIGPLAN international conference on Functional programming (ICFP ’02). Association for Computing Machinery, New York, NY, USA, 72–83. https://doi.org/10.1145/581478.581486

    Matthew Flatt. 2002. Composable and compilable macros: you want it when? SIGPLAN Not. 37, 9 (September 2002), 72–83. https://doi.org/10.1145/583852.581486

    Matthew Flatt. 2016. Binding as sets of scopes. SIGPLAN Not. 51, 1 (January 2016), 705–717. https://doi.org/10.1145/2914770.2837620

    Matthew Flatt. 2016. Binding as sets of scopes. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’16). Association for Computing Machinery, New York, NY, USA, 705–717. https://doi.org/10.1145/2837614.2837620


    May also be of interest:

    William D. Clinger and Mitchell Wand. 2020. Hygienic macro technology. Proc. ACM Program. Lang. 4, HOPL, Article 80 (June 2020), 110 pages. https://doi.org/10.1145/3386330

    And video: https://www.pldi21.org/prerecorded_hopl.13.html

    1. 3

      Around 22:06 he mentions “sometimes you want to be able to temporarily change what the IR is”, and that there’s a nice paper about it. It must be this: Macros for Domain-Specific Languages.

      1. 2

        And this library

        https://docs.racket-lang.org/ee-lib/index.html

        ee-lib: Library Support for DSL Macro Expanders Michael Ballantyne

        This library provides a higher-level API to Racket’s syntax system, designed for implementing macro expanders for DSLs. The paper “Macros for Domain-Specific Languages” serves as the guide-level explanation of the library and associated programming patterns. This page provides reference documentation.