by
André Pang
,
Don Stewart
,
Sean Seefried
,
Manuel M. T. Chakravarty
In Proceedings of the ACM SIGPLAN Workshop on Haskell
Add To MetaCart
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, and that it can support 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.
Citations
|
3853
|
Design Patterns: Elements of Reusable Object-Oriented Software
– Gamma, Helm, et al.
- 1995
|
|
202
|
Scripting: Higher level programming for the 21st century
– Ousterhout
- 1998
|
|
111
|
EMACS the extensible, customizable selfdocumenting display editor
– Stallman
- 1981
|
|
52
|
A lightweight implementation of generics and dynamics. Pages 90–104 of: Haskell ’02
– Cheney, Hinze
- 2002
|
|
47
|
XML: Generic combinators or type-based translation
– Haskell
- 1999
|
|
37
|
Safe and flexible dynamic linking of native code
– Hicks, Weirich, et al.
- 2000
|
|
25
|
Type classes with existential types
– Läufer
- 1996
|
|
22
|
Dynamic ML Without Dynamic Types
– Gilmore, Kirli, et al.
- 1997
|
|
21
|
Dynamic typing for distributed programming in polymorphic languages
– Duggan
- 1999
|
|
15
|
Type-safe linking with recursive DLL and shared libraries
– Duggan
- 2002
|
|
13
|
The Yampa arcade
– Courtney, Nilsson, et al.
- 2003
|
|
11
|
Alice in the land of Oz - an interoperability-based implementation of a functional language on top of a relational language
– KORNSTAEDT
- 2001
|
|
8
|
Combining type classes and existential types
– Laufer
- 1994
|
|
7
|
Sigbjørn Finne, and Oege de Moore. Compiling embedded languages
– Elliott
- 2000
|
|
6
|
Functional automatic differentiation with dirac impulses
– Nilsson
- 2003
|
|
4
|
Dynamic types have existential type
– Duggan
- 1994
|
|
3
|
hi — hmake interactive — compiler or interpreter
– Wallace
- 2000
|
|
2
|
Functional Image Synthesis
– Elliott
- 2001
|
|
2
|
Distributed computing based on clean dynamics
– Hegedus, Horvath
- 2004
|
|
2
|
Liang and Gilad Bracha. Dynamic class loading in the java virtual machine
– Sheng
- 1998
|
|
1
|
Chakravarty et al. A Primitive Foreign Function Interface
– Manuel
- 2004
|
|
1
|
22] Rinus Plasmeijer and Marko van Eekelen. Concurrent clean language report version 2.1
– Seefried, Chakravarty, et al.
- 2002
|