Perhaps I am missing something&#x2F;unable to interpret the article properly.<p>I remember there was a day when it clicked in my head that the way the lexical scope&#x2F;compiler in common lisp works means that the variable names don&#x27;t stick around at run-time, but are compiled away.  So of course, using the lexical scope of (let) forms in lisp means that yes, it is quite impossible to have a naive variable symbol passed into a let form and looked up at run time as though it were still around.<p>But does that mean its not possible?  I mean...doesn&#x27;t Common Lisp at least have both lexical and dynamic scope?  What if there was some kind of primitive function or form available that told lisp that you actually want to keep the names around and use that name to do run time environment&#x2F;variable lookup instead.  Then you could pass in such a quoted form and evaluate it and it would work.<p>Hang on a second...<p>Lets see if we can re-write that form from the article that &quot;doesn&#x27;t work&quot; in lisp...in an easy and convenient fashion.<p>Here&#x27;s his function definition:<p>(defun greater10 (value code) (if (&gt; value 10) (eval code)))<p>And now lets set up a dynamic binding&#x2F;evaluation using the less common progv form:<p>(progv &#x27;(msg) &#x27;(&quot;Hello&quot;)
  (greater10 20 &#x27;(print msg)))<p>And the result:<p>&quot;Hello&quot;