archives

Actors all the way down

Recently, there has been renewed interest in meta-circular interpreters. For example, see ActorScript, Fexpr the Ultimate Lambda, and Dale Schumacher's recent posts.

Here is the lambda calculus in ActorScript:

"lambda" id body ~~ eval(env) --> (argument) -->body.eval(Environment(id,argument, env))

Environment(id, value, env) ~~ lookup(id2) --> id=id2 ?~ true --> value ?? false --> env.lookup(id) ~?

Operator Operand ~~ eval(environment) --> Operator.eval(environment)(Operand.eval(environment))

Identifier ~~ eval(environment) --> environment.lookup(Identifier)