Embedded Haskell for Extensible Applications

Embedding a language in an application is an ideal way to extend and customise that application. It is common for editors, window managers, and other large applications to provide an application-specific language with some scripting ability. Unfortunately, these custom languages tend to lack the features available in stand-alone languages - useful type checking, coherent syntax, libraries - under the rationale that they are only intended for small scripting jobs. Inevitably, however, users start writing larger scripts and quickly encounter the limits imposed by bad language design.

An alternative is to embed a rich stand-alone language in the application. The obvious example of this approach is the emacs editor, which is scriptable in a dialect of lisp. The vim editor provides some support for limited scripting in several languages, including perl and python. However, in many cases, these languages are still unsuitable for writing clear and correct code. Recent developments in domain specific languages have shown Haskell to be well suited for scripting applications. Its clean, expressive syntax and elegant semantics make it ideal for domain specific scripting.

In this project you will develop a library for dynamic evaluation of Haskell code, providing features users of lisp or other scripting languages are accustomed to. Recently, a Haskell editor project has begun, Yi, and in this thesis you would design and implement the scripting and extensibility infrastructure in Yi. You should be able to script and extend Yi via your library.

Expectations References Last modified : Sat Jan 8 14:26:51 EST 2005

Valid HTML 4.01!