Really? You must be really good at Clojure. Then you can explain this:
user=> (list 1 2 3)
(1 2 3)
user=> (list? (list 1 2 3))
true
so (1 2 3) is a list.
user=> (cons 0 (list 1 2 3))
(0 1 2 3)
user=> (list? (cons 0 (list 1 2 3)))
false
(0 1 2 3) is not a list?
user=> (list? '(0 1 2 3))
true
But then it is???
WTF?
Compare ELISP:
ELISP> (listp (list 1 2 3))
t
ELISP> (listp (cons 0 (list 1 2 3)))
t
and CL:
CL-USER> (listp (list 1 2 3))
T
CL-USER> (listp (cons 0 (list 1 2 3)))
T