The libscheme
library makes Scheme available as a C library.
Its interface is through a single C header file. Scheme expressions
can be read from an arbitrary input stream, evaluated with respect to
a particular environment, and printed to an arbitrary output stream.
The user can extend the interpreter by adding bindings to the global
environment. Each binding can provide a new primitive written in C, a
new syntax form, a new type, a constant, etc.