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

Herbarium Racketensis: a stroll through the woods (functional pearl)

Published: 29 August 2017 Publication History

Abstract

Domain-specific languages are the ultimate abstraction, dixit Paul Hudak. But what abstraction should we use to build such ultimate abstractions? What is sauce for the goose is sauce for the gander: a language, of course!
Racket is the ultimate abstraction-abstraction, a platform for quickly and easily building new ultimate abstractions. This pearl demonstrates Racket's power by taking a leisurely walk through the implementation of a DSL for Lindenmayer systems, the computational model par excellence of theoretical botany.

Supplementary Material

Auxiliary Archive (icfp17-main105-s.zip)
This archive includes the artifact that was accepted alongside the paper.

References

[1]
Masaki Aono and Tosiyasu L. Kunii. Botanical tree image generation. IEEE Computer Graphics and Applications 4(5), 1984.
[2]
Eli Barzilay and John Clements. Laziness without all the hard work: combining lazy and strict languages for teaching. In Proc. Functional and Declarative Programming in Education (@ICFP), 2005.
[3]
John D. Corbit and David J. Garbary. Computer simulation of the morphology and development of several species of seaweed Using Lindenmayer systems. Computers & Graphics 17(1), 1993.
[4]
Ryan Culpepper and Matthias Felleisen. Fortifying macros. In Proc. ICFP, pp. 235–246, 2010.
[5]
R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5(4), pp. 295–326, 1992.
[6]
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. The Racket manifesto. In Proc. SNAPL, 2015.
[7]
Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: a programming environment for Scheme. JFP 12(2), pp. 159–182, 2002.
[8]
Matthew Flatt. Composable and compilable macros: you want it when? In Proc. ICFP, pp. 72–83, 2002.
[9]
Matthew Flatt. Submodules in Racket: you want it when, again? In Proc. GPCE, pp. 13–22, 2013.
[10]
Matthew Flatt. Bindings as sets of scopes. In Proc. POPL, pp. 705–717, 2016.
[11]
Matthew Flatt, Eli Barzilay, and Robert Bruce Findler. Scribble: closing the book on ad-hoc documentation tools. In Proc. ICFP, pp. 109–120, 2009.
[12]
Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In Proc. PLDI, pp. 236–248, 1998.
[13]
Spencer Florence, Burke Fetscher, Matthew Flatt, Tina Kiguradze, Dennis P. West, Charlotte Niznik, Paul R. Yarnold, Robert Bruce Findler, and Steven M. Belknap. POP-PL: A patient-oriented prescription programming language. In Proc. GPCE, pp. 131–140, 2015.
[14]
Winfried Kurth. Specification of morphological models with L-systems and relational growth grammars. Journal of Interdisciplinary Image Science 5, 2007.
[15]
Aristid Lindenmayer. Mathematical models for cellular interactions in development. Journal of Theoretical Biology 18, pp. 280–315, 1968.
[16]
Stelios Manousakis. Musical L-Systems. MS dissertation, The Royal Conservatory, The Hague, 2006.
[17]
Pascal Müller, Peter Wonka, Simon Haegler, Andreas Ulmer, and Luc Van Gool. Procedural modeling of buildings. In Proc. Conference on Computer Graphics and Interactive Techniques, pp. 614–623, 2006.
[18]
Yoav I H Parish and Pascal Müller. Procedural generation of cities. In Proc. Conference on Computer Graphics and Interactive Techniques, pp. 301–308, 2001.
[19]
Przemyslaw Prusinkiewicz. Applications of L-systems to computer imagery. In Proc. International Workshop on Graph Grammars and Their Application to Computer Science, 1986a.
[20]
Przemyslaw Prusinkiewicz. Graphical applications of L-systems. In Proc. Proceedings of Graphics Interface / Vision Interface, 1986b.
[21]
Przemyslaw Prusinkiewicz and Aristid Lindenmayer. The Algorithmic Beauty of Plants. Springer Verlag, 1990.
[22]
Sam Tobin-Hochstadt and Matthias Felleisen. Logical types for untyped languages. In Proc. ICFP, pp. 117–128, 2010.
[23]
Sam Tobin-Hochstadt, Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Ben Greenman, Andrew Kent, Vincent St-Amour, T. Stephen Strickland, and Asumu Takikawa. Migratory typing: Ten years later. In Proc. SNAPL, 2017.
[24]
Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as libraries. In Proc. PLDI, pp. 132–141, 2011.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 1, Issue ICFP
September 2017
1173 pages
EISSN:2475-1421
DOI:10.1145/3136534
Issue’s Table of Contents
Permission to make digital or hard copies of part or all 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 third-party components of this work must be honored. For all other uses, contact the Owner/Author.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 29 August 2017
Published in PACMPL Volume 1, Issue ICFP

Check for updates

Badges

Author Tags

  1. Lindenmayer systems
  2. Racket

Qualifiers

  • Research-article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 1,775
    Total Downloads
  • Downloads (Last 12 months)218
  • Downloads (Last 6 weeks)150
Reflects downloads up to 21 Sep 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