For those who can explain the difference is this a LISP 1 or a LISP 2 ?
(defvar foo 5) ; variable with the name foo
(defun foo () 5) ; function with the name foo
In a Lisp 1 the defun would overwrite the previous variable declaration. In a Lisp 2 though, both expressions coexist.https://groups.google.com/forum/#!msg/comp.lang.lisp/6TkfPLe...
Also as pointed out by KMP later in that thread, block and go tags are separate namespaces, and so are type names. I like to say that it is really Lisp1 vs LispN. Any language with macros and first-class identifiers is going to be capable of having arbitrarily many namespaces.