Embedding an Interpreted Language Using Higher-Order Functions and Types
Using an embedded, interpreted
language to
control a complicated application can have significant
software-engineering benefits.
But existing interpreters are designed for embedding into C code.
To embed an interpreter into a different language requires an API
suited to that language.
This paper presents
Lua-ML, a new API that is suited to languages that provide
higher-order functions and types.
The API exploits higher-order functions and types to reduce the
amount of glue code needed to use an embedded interpreter.
Where embedding in C requires a special-purpose ``glue function''
for every function to be embedded, embedding in Lua-ML requires only a
description of each function's type.
Lua-ML also makes it easy to define a Lua function whose behavior
depends on the number and types of its arguments.
Full paper
The full paper will appear in the Journal of Functional
Programming.
A preprint is available now as
US Letter PostScript (269K),
US Letter PDF (173K),
and
US Letter TeX DVI (117K).