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.
Supplemental Material
Available for Download
This archive includes the artifact that was accepted alongside the paper.
- Masaki Aono and Tosiyasu L. Kunii. Botanical tree image generation. IEEE Computer Graphics and Applications 4(5), 1984. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- 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.Google Scholar
- Ryan Culpepper and Matthias Felleisen. Fortifying macros. In Proc. ICFP, pp. 235–246, 2010. Google Scholar
Digital Library
- R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5(4), pp. 295–326, 1992. Google Scholar
Digital Library
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. The Racket manifesto. In Proc. SNAPL, 2015.Google Scholar
- 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. Google Scholar
Digital Library
- Matthew Flatt. Composable and compilable macros: you want it when? In Proc. ICFP, pp. 72–83, 2002. Google Scholar
Digital Library
- Matthew Flatt. Submodules in Racket: you want it when, again? In Proc. GPCE, pp. 13–22, 2013. Google Scholar
Digital Library
- Matthew Flatt. Bindings as sets of scopes. In Proc. POPL, pp. 705–717, 2016. Google Scholar
Digital Library
- Matthew Flatt, Eli Barzilay, and Robert Bruce Findler. Scribble: closing the book on ad-hoc documentation tools. In Proc. ICFP, pp. 109–120, 2009. Google Scholar
Digital Library
- Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In Proc. PLDI, pp. 236–248, 1998. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Winfried Kurth. Specification of morphological models with L-systems and relational growth grammars. Journal of Interdisciplinary Image Science 5, 2007.Google Scholar
- Aristid Lindenmayer. Mathematical models for cellular interactions in development. Journal of Theoretical Biology 18, pp. 280–315, 1968. Google Scholar
Cross Ref
- Stelios Manousakis. Musical L-Systems. MS dissertation, The Royal Conservatory, The Hague, 2006.Google Scholar
- 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. Google Scholar
Digital Library
- 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.Google Scholar
- Przemyslaw Prusinkiewicz. Applications of L-systems to computer imagery. In Proc. International Workshop on Graph Grammars and Their Application to Computer Science , 1986a.Google Scholar
- Przemyslaw Prusinkiewicz. Graphical applications of L-systems. In Proc. Proceedings of Graphics Interface / Vision Interface , 1986b.Google Scholar
- Przemyslaw Prusinkiewicz and Aristid Lindenmayer. The Algorithmic Beauty of Plants. Springer Verlag, 1990. Google Scholar
Cross Ref
- Sam Tobin-Hochstadt and Matthias Felleisen. Logical types for untyped languages. In Proc. ICFP, pp. 117–128, 2010. Google Scholar
Digital Library
- 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.Google Scholar
- Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as libraries. In Proc. PLDI, pp. 132–141, 2011. Google Scholar
Digital Library
Index Terms
Herbarium Racketensis: a stroll through the woods (functional pearl)
Recommendations
Abstracting definitional interpreters (functional pearl)
In this functional pearl, we examine the use of definitional interpreters as a basis for abstract interpretation of higher-order programming languages. As it turns out, definitional interpreters, especially those written in monadic style, can provide a ...
Super 8 languages for making movies (functional pearl)
The Racket doctrine tells developers to narrow the gap between the terminology of a problem domain and general programming constructs by creating languages instead of just plain programs. This pearl illustrates this point with the creation of a ...
Pycket: a tracing JIT for a functional language
ICFP '15We present Pycket, a high-performance tracing JIT compiler for Racket. Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more. On average, over a standard ...






Comments