Title: Languages in Racket
Speaker: Prof. Matthew Flatt (University of Utah)
Time: 15:30, Friday, June 15th, 2012
Venue: Room 334, 3rd Floor, Building 5#, State Key Laboratory of Computer Science, Institute of Software, Chinese Academy of Sciences
No matter how language designers try to create elegant, consistent, all-powerful programming languages, the pressures of real-world programming tasks consistently drive the demand for new programming constructs and domain-specific languages. Extensible languages such as Racket address this problem by allowing programmers to create new constructs and DSLs as needed. Racket inherits its basic approach to extensibility from Lisp and Scheme, but Racket’s unique features enable an even greater degree of language extension and composition. After a brief refresher on Lisp- and Scheme-style extensibility, this talk will explain how Racket is evolving to solve some stubborn problems in Lisp-style extensibility, such as support for static types and non-parenthesized syntax. Key elements of the solution include Racket’s module system, its notion of “languages” that go beyond S-expression manipulation, and its constructs to manage the trade-off between reflection and encapsulation.