  We designed and implemented a framework for creating extensible
domain-specific languages that consists of library-defined keywords.
First-class language features in other programming languages can be implemented
as libraries with the help of our framework. The core concept in our framework
is the type class Dsl, which can be considered as both the ad-hoc polymorphic
version of a delimited continuation and a more generic version of Monad. Thus
it can be also used as a statically typed extensible effect system that is more
efficient and more concise than existing Monad-based effect systems.
