So this was a very interesting post. I would like to note that we can actually do something like definitional scoping in CL too :), but we need to write it ourselves!<p>We would do this using CLOS and its MOP, more precisely by using the FUNCALLABLE metaclass and having a class with an environment slot, source slot and effective function slot which both would be altered by some convention (USE, COMPOSE and FUNCTION it seems?).<p>Then you&#x27;d SET-FUNCALLABLE-INSTANCE-FUNCTION to a lambda that invalidates the efficient function when source or environment has changed and composes a new function with (compile `(let((,@environment(( ,@source)).<p>Voila, you now have a type of function that carries with it an environment and its source code.<p>Now I don&#x27;t know if this fully satisfies what REDBOL is doing to be honest, because the post talks about &quot;deep walking&quot; and that sounds like code walking, which is a scary place to go to in CL.<p>EDIT: Yeah, it seems like USE would do a full code walk(?) Code walking really sucks, because you need to recognise the special forms of CL and deal with them appropriately. This doesn&#x27;t apply if the list of vars used is always passed to USE (just let LET take over binding the lexical environment)