Why is it that EVAL returns the value in the current DYNAMIC environment, rather than the lexical environment? Or perhaps the most recent binding (lexical unless a variable is special)? Or if this is necessary for some reason, why isn't there another function, say, LEXICAL-EVAL that does this? It seems rather strange to have a mainly lexically scoped language with no facility for lexical evaluation.