Abstract
Extension languages enable users to expand the functionality of
an application without touching its source code. Commonly, these
languages are dynamically typed languages, such as Lisp, Python,
or domain-specific languages, which support runtime plugins via
dynamic loading of components. We show that Haskell can be
comfortably used as a statically typed extension language for
both Haskell and foreign-language applications supported by the
Haskell FFI, and that it can perform type-safe dynamic loading of
plugins using dynamic types. Moreover, we discuss how plugin
support is especially useful to applications where Haskell is
used as an embedded domain-specific language (EDSL). We explain
how to realise type-safe plugins using dynamic types, runtime
compilation, and dynamic linking, exploiting infrastructure
provided by the Glasgow Haskell Compiler. We demonstrate the
practicability of our approach with several applications that
serve as running examples.
Description
We show that Haskell can be comfortably used as a statically typed extension language for both Haskell and foreign-language applications supported by the Haskell FFI, and that it can perform type-safe dynamic loading of plugins using dynamic types
Links and resources
Tags
community