> Nevertheless, this defect is largely harmless because Common Lisp separates the name space into one for functions and one for variables. In other words, it can be said that the existence of this defect has been justified the separation of name spaces which has made the semantics of the Common Lisp language complex unnecessarily<p>One note on variable capture in Common Lisp; while it is true that a lisp-2 runs into the issues somewhat less often than a lisp-1, the existence of FLET and LABELS should let people know that it doesn't solve the problem.<p>The real solution to this in Common Lisp is packages.<p><pre><code> (in-package foo)
(defun bar () (do-something))
(defmacro baz (x) `(bar ,x))
(in-package quux)
(flet ((bar () (do-something-else)))
(baz 2)) ; calls foo::bar not the bar bound in above FLET
</code></pre>
Also, many people like that Common Lisp has two namespaces because there are many identifiers that are useful as both nouns and verbs (e.g. LIST).