skip to main content
research-article

Submodules in racket: you want it when, again?

Published:27 October 2013Publication History
Skip Abstract Section

Abstract

In an extensible programming language, programmers write code that must run at different times - in particular, at compile time versus run time. The module system of the Racket programming language enables a programmer to reason about programs in the face of such extensibility, because the distinction between run-time and compile-time phases is built into the language model. Submodules extend Racket's module system to make the phase-separation facet of the language extensible. That is, submodules give programmers the capability to define new phases, such as "test time" or "documentation time," with the same reasoning and code-management benefits as the built-in distinction between run time and compile time.

Skip Supplemental Material Section

Supplemental Material

References

  1. Jason Baker and Wilson C. Hsieh. Maya: Multiple-Dispatch Syntax Extension in Java. In Proc. ACM Conf. Programming Language Design and Implementation, pp. 270--281, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Ryan Culpepper, Sam Tobin-Hochstadt, and Matthew Flatt. Advanced Macrology and the Implementation of Typed Scheme. In Proc. Wksp. Scheme and Functional Programming, 2007.Google ScholarGoogle Scholar
  3. R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic Abstraction in Scheme. Lisp and Symbolic Computation 5(4), pp. 295--326, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Sebastian Erdweg, Tillmann Rendel, Christian Kästner, and Klaus Ostermann. SugarJ: Library-Based Syntactic Language Extensibility. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, pp. 391--406, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Matthew Flatt. Composable and Compilable Macros: You Want it When? In Proc. ACM Intl. Conf. Functional Programming, pp. 72--83, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Matthew Flatt, Eli Barzilay, and Robert Bruce Findler. Scribble: Closing the Book on Ad Hoc Documentation Tools. In Proc. ACM Intl. Conf. Functional Programming, pp. 109--120, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Matthew Flatt, Ryan Culpepper, Robert Bruce Findler, and David Darais. Macros that Work Together: Compile-Time Bindings, Partial Expansion, and Definition Contexts. J. Functional Programming 22(2), pp. 181--216, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Abdulaziz Ghuloum and R. Kent Dybvig. Implicit Phasing for R6RS Libraries. In Proc. ACM Intl. Conf. Functional Programming, pp. 303--314, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Simon Peyton Jones and Tim Sheard. Template metaprogramming for Haskell. In Proc. ACM Wksp. Haskell, pp. 1--16, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, and Robert Bruce Findler. Run Your Research: On the Effectiveness of Lightweight Mechanization. In Proc. ACM Sym. Principles of Programming Languages, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic Macro Expansion. In Proc. Lisp and Functional Programming, pp. 151--181, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Simon Marlow. Haddock, a Haskell Documentation Tool. In Proc. ACM Wksp. Haskell, pp. 78--89, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Tiark Rompf. Lightweight Modular Staging and Embedded Compilers: Abstraction without Regret for High-Level High-Performance Programming. PhD dissertation, ÉEcole Polytechnique Féedérale de Lausanne, 2012.Google ScholarGoogle Scholar
  15. Tiark Rompf and Martin Odersky. Lightweight Modular Staging: a Pragmatic Approach to Runtime Code Generation and Compiled DSLs. In Proc. Generative Programming and Component Engineering, pp. 127--136, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Michael Sperber (Ed.). The Revised6 Report on the Algorithmic Language Scheme. 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Walid Taha and Tim Sheard. MetaML and Multi-Stage Programming with Explicit Annotations. Theoretical Computer Science 248(1-2), pp. 211--242, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Sam Tobin-Hochstadt and Matthias Felleisen. The Design and Implementation of Typed Scheme. In Proc. ACM Sym. Principles of Programming Languages, pp. 395--406, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Laurence Tratt. Compile-time Meta-programming in a Dynamically Typed OO Language. In Proc. Dynamic Languages Symposium, pp. 49--63, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Oscar Waddell and R. Kent Dybvig. Extending the Scope of Syntactic Abstraction. In Proc. ACM Sym. Principles of Programming Languages, pp. 203--213, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Submodules in racket: you want it when, again?

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 49, Issue 3
      GPCE '13
      March 2014
      181 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2637365
      Issue’s Table of Contents
      • cover image ACM Conferences
        GPCE '13: Proceedings of the 12th international conference on Generative programming: concepts & experiences
        October 2013
        198 pages
        ISBN:9781450323734
        DOI:10.1145/2517208

      Copyright © 2013 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 27 October 2013

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!