Bibliography

Harold Abelson, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985.

Gregory H. Cooper and Shriram Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In ESOP, pp. 294–308, 2006.

Ryan Culpepper and Matthias Felleisen. Fortifying macros. In ICFP, pp. 235–246, 2010.

R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in Scheme. LispSC 5(4), pp. 295–326, 1992.

Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. Semantics Engineering with PLT Redex. MIT Press, 2010.

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs. MIT Press, 2001.

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. The structure and interpretation of the computer science curriculum. JFP 14(4), pp. 365–378, 2004.

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. A functional I/O system. In ICFP, pp. 47–58, 2009.

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.

Robert Bruce Findler and Matthias Felleisen. Contracts for higher-order functions. In ICFP, pp. 48–59, 2002.

Robert Bruce Findler and Matthew Flatt. Slideshow: functional presentations. JFP 16(4-5), 2006.

Matthew Flatt. Composable and compilable macros: you want it when? In ICFP, pp. 72–83, 2002.

Matthew Flatt, Eli Barzilay, and Robert Bruce Findler. Scribble: closing the book on ad-hoc documentation tools. In ICFP, pp. 109–120, 2009.

Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In ICFP, pp. 236–248, 1998.

Matthew Flatt and Robert Bruce Findler. Kill-safe synchronization abstractions. In PLDI, pp. 47–58, 2004.

Matthew Flatt, Robert Bruce Findler, and Matthias Felleisen. Scheme with classes, mixins, and traits. In APLAS, pp. 270–289, 2006.

Matthew Flatt, Robert Bruce Findler, Shriram Krishnamurthi, and Matthias Felleisen. Programming languages as operating systems (or revenge of the son of the Lisp machine). In ICFP, pp. 138–147, 1999.

Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In POPL, pp. 171–183, 1998.

Matthew Flatt and PLT. Reference: Racket. PLT Design Inc., PLT-TR-2010-1, 2010. http://racket-lang.org/tr1/

Martin Fowler. Domain-specific languages. Addison-Wesley, 2010.

Paul Hudak. Domain-specific languages. In Handbook of Programming Languages. MacMillan. pp 39–60, 1998.

Andrew W. Keep and Kent R. Dybvig. A nanopass framework for commercial compiler development. In ICFP, pp. 343–350, 2013.

Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In LFP, 1986.

Eugene Kohlbecker and Mitchell Wand. Macro-by-example: deriving syntactic transformations from their specifications. In POPL, pp. 77–84, 1987.

Shriram Krishnamurthi. Linguistic Reuse. PhD dissertation, Rice University, 2001.

Shriram Krishnamurthi, Matthias Felleisen, and Bruce F. Duba. From macros to reusable generative programming. In GPCE, pp. 105–120, 1999.

Kats C.L. Lennart and Eelco Visser. The Spoofax language workbench. In OOPSLA, pp. 444–463, 2010.

Guillaume Marceau, Kathi Fisler, and Shriram Krishnamurthi. Measuring the effectiveness of error messages designed for novice programmers. In Technical Symposium on Computer Science Education, pp. 499–504, 2011.

Jacob Matthews and Robert Bruce Findler. Operational semantics for multi-language programs. TOPLAS 31(3), pp. 12:1–12:44, 2009.

Jacob Matthews, Robert Bruce Findler, Matthew Flatt, and Matthias Felleisen. A visual environment for developing context-sensitive term rewriting systems. In Rewriting Techniques and Applications, pp. 2–16, 2004.

Bertrand Meyer. Applying design by contract. IEEE Computer 25(10), pp. 40–51, 1992.

Mark Samuel Miller. Robust composition: towards a unified approach to access control and concurrency control. PhD dissertation, Johns Hopkins University, 2006.

Scott Moore, Christos Dimoulas, Dan King, and Stephen Chong. SHILL: a secure shell scripting language. In SOSP, pp. 183–199, 2014.

Scott Owens, Matthew Flatt, Olin Shivers, and Benjamin Mcmullan. Lexer and parser generators in Scheme. In SFP, pp. 41–52, 2004.

Dipanwita Sarkar, Oscar Waddell, and R. Kent Dybvig. A nanopass framework for compiler education. JFP 15(5), pp. 653–667, 2005.

T. Stephen Strickland, Christos Dimoulas, Asumu Takikawa, and Matthias Felleisen. Contracts for first-class classes. TOPLAS 35(3), pp. 11:1–11:58, 2013.

T. Stephen Strickland and Matthias Felleisen. Contracts for first-class modules. In DLS, pp. 27–38, 2009.

T. Stephen Strickland, Sam Tobin-Hochstadt, Robert Bruce Findler, and Matthew Flatt. Chaperones and impersonators: run-time support for reasonable interposition. In OOPSLA, pp. 943–962, 2012.

Asumu Takikawa, Daniel Feltey, Earl Dean, Robert Bruce Findler, Matthew Flatt, Sam Tobin-Hochstadt, and Matthias Felleisen. Towards practical gradual typing. In ECOOP, 2015. to appear

Asumu Takikawa, T. Stephen Strickland, Christos Dimoulas, Sam Tobin-Hochstadt, and Matthias Felleisen. Gradual typing for first-class classes. In OOPSLA, pp. 793–810, 2012.

Sam Tobin-Hochstadt and Matthias Felleisen. The design and implementation of Typed Scheme. In POPL, pp. 395–406, 2008.

Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as libraries. In PLDI, pp. 132–141, 2011.

Tobias Wrigstad, Patrick Eugster, John Field, Nate Nystrom, and Jan Vitek. Software hardening: a research agenda. In STOP, pp. 58–70, 2009.

Hongwei Xi and Frank Pfenning. Eliminating array bound checking through dependent types. In PLDI, pp. 249–257, 1998.