Home

eflisp is an evolution of Jeff Bezanson's femtolisp into an r7rs-small scheme interpreter.

It is currently maintained as a two level implementation, with

  • eflisp base - the evolved femtolisp with a loadable r7rs veneer
  • eflisp r7rs - the (mostly complete) r7rs system

eflisp base has no real library mechanism; though femtolisp made no attemp at scheme compatability, it has much in common with an r4rs level of capability, but with lispy syntax, and one shot continuations using trycatch. It has many nice features: small size, fast vm, robust printing, utf8 strings, etc.

eflisp r7rs aims at compatibility with r7rs-small, but will no intention to support full continuations or mutable strings.

History

Starting with a merge of femtolisp and the related Julia's flisp, small improvements were made to the runtime and code generator. Much later, a thin veneer of r7rs was added to pass most of ecraven's r7rs-coverage test, but with the notable exceptions of the library mechanisms and syntax-rules. (I had no intention of adding more than one-shot continuations, nor mutable strings.)

Discovering nyuichi's r7expander, I hacked that into eflisp, which provides the library mechanisms along with syntax-rules and low level macros with er-macro-transformer

DevNotes

Base Level

r7rs Level

Base level Docs

Manual

API