Dynamic typing in a statically typed language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Building domain-specific embedded languages
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Dynamic typing as staged type inference
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic class loading in the Java virtual machine
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Dynamic typing for distributed programming in polymorphic languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Haskell and XML: generic combinators or type-based translation?
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type-safe cast: (functional pearl)
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Type-Safe linking with recursive DLLs and shared libraries
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automated techniques for provably safe mobile code
Theoretical Computer Science - Dependable computing
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
IFL '96 Selected Papers from the 8th International Workshop on Implementation of Functional Languages
EMACS the extensible, customizable self-documenting display editor
Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Functional automatic differentiation with dirac impulses
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
Student paper: HaskellDB improved
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Dynamic applications from the ground up
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Haskell server pages through dynamic loading
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Tangible functional programming
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Safe functional reactive programming through dependent types
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Specialising simulator generators for high-performance Monte-Carlo methods
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Embedding polymorphic dynamic typing
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
A document-centered environment for haskell
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Hi-index | 0.00 |
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.