Dynamic Applications From the Ground Up

Abstract
Some Lisp programs such as Emacs, but also the Linux kernel (when fully
modularised) are mostly dynamic; i.e., apart from a small static
core, the significant functionality is dynamically loaded. In this paper,
we explore fully dynamic applications in Haskell where the static
core is minimal and code is hot swappable. We demonstrate the feasibility
of this architecture by two applications: Yi, an extensible editor, and
Lambdabot, a plugin-based IRC robot. Benefits of the approach include hot
swappable code and sophisticated application configuration and extension via
embedded DSLs. We illustrate both benefits in detail at the example of a
novel embedded DSL for editor interfaces.