[Grace-core] Cool paper from Racket team...
James Noble
kjx at ecs.vuw.ac.nz
Sun Mar 20 00:12:29 PDT 2011
http://blog.racket-lang.org/2011/03/languages-as-libraries-pldi-2011.html
We've just finished up the final version of our PLDI 2011 paper on
language extension in Racket. The paper describes how the module
system and the syntax system work together to support new languages
with new static semantics, such as Typed Racket. Here's the abstract:
Programming language design benefits from constructs for extending the
syntax and semantics of a host language. While C's string-based macros
empower programmers to introduce notational shorthands, the parser-
level macros of Lisp encourage experimentation with domain-specific
languages. The Scheme programming language improves on Lisp with
macros that respect lexical scope.The design of Racket---a descendant
of Scheme---goes even further with the introduction of a full-fledged
interface to the static semantics of the language. A Racket extension
programmer can thus add constructs that are indistinguishable from
``native'' notation, large and complex embedded domain-specific
languages, and even optimizing transformations for the compiler
backend. This power to experiment with language design has been used
to create a series of sub-languages for programming with first-class
classes and modules, numerous languages for implementing the Racket
system, and the creation of a complete and fully integrated typed
sister language to Racket's untyped base language.This paper explains
Racket's language extension API via an implementation of a small typed
sister language. The new language provides a rich type system that
accommodates the idioms of untyped Racket. Furthermore, modules in
this typed language can safely exchange values with untyped modules.
Last but not least, the implementation includes a type-based optimizer
that achieves promising speedups. Although these extensions are
complex, their Racket implementation is just a library, like any other
library, requiring no changes to the Racket implementation.
More information about the Grace-core
mailing list