@lispi314@amoroso@simon_brooke a main problem at that time (decades ago) was that interpreted code and compiled code differed in bindings. Interpreter -> dynamic binding, compiler -> lexical binding, by default. That was changed by Scheme and later picked up by Common Lisp. Even in Common Lisp there are differences. When using an Interpreter, a macro can be evaluated at runtime and functions may get access to their source code and change it at runtime