[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2517208.2517211acmconferencesArticle/Chapter ViewAbstractPublication PagesgpceConference Proceedingsconference-collections
research-article

Submodules in racket: you want it when, again?

Published: 27 October 2013 Publication History

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.

Supplementary Material

ZIP File (gpce03.zip)
The file "model.rkt" implements the formal model that is presented in the paper. It runs in Racket v5.3 and later.

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.
[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.
[3]
R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic Abstraction in Scheme. Lisp and Symbolic Computation 5(4), pp. 295--326, 1993.
[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.
[5]
Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2010.
[6]
Matthew Flatt. Composable and Compilable Macros: You Want it When? In Proc. ACM Intl. Conf. Functional Programming, pp. 72--83, 2002.
[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.
[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.
[9]
Abdulaziz Ghuloum and R. Kent Dybvig. Implicit Phasing for R6RS Libraries. In Proc. ACM Intl. Conf. Functional Programming, pp. 303--314, 2007.
[10]
Simon Peyton Jones and Tim Sheard. Template metaprogramming for Haskell. In Proc. ACM Wksp. Haskell, pp. 1--16, 2002.
[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.
[12]
Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic Macro Expansion. In Proc. Lisp and Functional Programming, pp. 151--181, 1986.
[13]
Simon Marlow. Haddock, a Haskell Documentation Tool. In Proc. ACM Wksp. Haskell, pp. 78--89, 2002.
[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.
[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.
[16]
Michael Sperber (Ed.). The Revised6 Report on the Algorithmic Language Scheme. 2007.
[17]
Walid Taha and Tim Sheard. MetaML and Multi-Stage Programming with Explicit Annotations. Theoretical Computer Science 248(1-2), pp. 211--242, 2000.
[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.
[19]
Laurence Tratt. Compile-time Meta-programming in a Dynamically Typed OO Language. In Proc. Dynamic Languages Symposium, pp. 49--63, 2005.
[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.

Cited By

View all
  • (2024)DSLs in Racket: You Want It How, Now?Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695645(84-103)Online publication date: 17-Oct-2024
  • (2023)MacoCaml: Staging Composable and Compilable MacrosProceedings of the ACM on Programming Languages10.1145/36078517:ICFP(604-648)Online publication date: 31-Aug-2023
  • (2021)Type-safe generation of modules in applicative and generative stylesProceedings of the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3486609.3487209(184-196)Online publication date: 17-Oct-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

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
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 27 October 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. language tower
  2. macros
  3. modules

Qualifiers

  • Research-article

Conference

GPCE'13
Sponsor:
GPCE'13: Generative Programming: Concepts and Experiences
October 27 - 28, 2013
Indiana, Indianapolis, USA

Acceptance Rates

GPCE '13 Paper Acceptance Rate 20 of 59 submissions, 34%;
Overall Acceptance Rate 56 of 180 submissions, 31%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 27 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)DSLs in Racket: You Want It How, Now?Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695645(84-103)Online publication date: 17-Oct-2024
  • (2023)MacoCaml: Staging Composable and Compilable MacrosProceedings of the ACM on Programming Languages10.1145/36078517:ICFP(604-648)Online publication date: 31-Aug-2023
  • (2021)Type-safe generation of modules in applicative and generative stylesProceedings of the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3486609.3487209(184-196)Online publication date: 17-Oct-2021
  • (2020)Adding interactive visual syntax to textual codeProceedings of the ACM on Programming Languages10.1145/34282904:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • (2017)Herbarium Racketensis: a stroll through the woods (functional pearl)Proceedings of the ACM on Programming Languages10.1145/31102451:ICFP(1-15)Online publication date: 29-Aug-2017
  • (2017)Frameworks compiled from declarationsSoftware—Practice & Experience10.1002/spe.241747:5(741-762)Online publication date: 1-May-2017
  • (2016)Source-to-Source Compilation via SubmodulesProceedings of the 9th European Lisp Symposium on European Lisp Symposium10.5555/3005729.3005736(56-63)Online publication date: 9-May-2016
  • (2016)Binding as sets of scopesACM SIGPLAN Notices10.1145/2914770.283762051:1(705-717)Online publication date: 11-Jan-2016
  • (2016)Binding as sets of scopesProceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages10.1145/2837614.2837620(705-717)Online publication date: 11-Jan-2016
  • (2023)How Profilers Can Help Navigate Type MigrationProceedings of the ACM on Programming Languages10.1145/36228177:OOPSLA2(544-573)Online publication date: 16-Oct-2023

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media