Hi this is e3lli
e3lli is a new highly dynamic and extensible metalanguage in the lisp tradition.
It is a modern exploration of lisp's strengths:
(dynamism extensibility structure code/data duality)
e3lli combines three main ideas:
- Fexprs (first-class eval & call-by-text)
- Effects and handlers (extensible semantics)
- First-class input and output (concurrent ML)
Like its ancestors e3lli is build on a small language kernel:
- Lisp was inspired by lambda calculus
- Scheme started as an exploration of the actor model
- e3lli is an exploration of the sequent calculus
e3lli's core is derived from sequent calculus. It looks at computation in context and abstracts the interaction between the two as input/output duality.
Lambda calculus is the art of naming things and
sequent calculus is the art of naming dual things.
The three ideas mentioned earlier grow from e3lli's core; as well as:
- A flexible match, results from composition and environments; this generalizes lisp's argument matching.
- A robust and incremental partial evaluation, results from i/o staging; macros and functions are one continuum, as is incremental parsing.
- A tower of languages or rather a forest with portals.
e3lli is the eval-env-exp languages language implementation. Of course it is build with language trees.
e3lli grows into a dynamic and functional high level lisp language:
- That solves the expression problem with an idea from Cartwright, Felleisen and Kiselyov.
- That shows functional programming can (and should mostly) be dynamic and there is no i/o problem if you do not defer i/o until you can't; but build it into all the boundaries instead, where it belongs!
e3lli wants to build this core onto:
- Immutable functional data (inspired by clojure & immer; immix)
- Forth inspired indirect threading (the simplest highly dynamic runtime; allows for flexible inlining and concentrates instructions at the edges otherwise)
- An actual machine (this is computational reality; all other targets come later since every virtual machine has to become actual too)
For more information:
Have a look at the core theory
or clone e3lli's repo:
% git clone http://perma-curious.eu/e3lli.git
or clone the repo holding all the research leading up to e3lli:
% git clone http://perma-curious.eu/eee.git