> That is, it cannot store any values at all.

NIL is a value in Lisp, no? So that means an array with element type NIL should be able to store exactly one value, whose index is NIL.

In Common Lisp, the type NULL is one which has only one value in its domain, which is NIL. The type of NIL is NULL.

The Common Lisp type NIL has no elements; no value exists which has type NIL.

NULL is Common Lisp's null type (and so is correctly named).

The type named NIL is Common Lisp's bottom type. The top type is T.

This is pretty clever; they found another punning of NIL and T. Everything is of type T, and nothing is of type NIL.

Only NIL is of type NULL.

The existing, ancient function NULL that predates this type system becomes a type predicate. That is to say, when we evaluate the expression (NULL NIL), yielding true, it has a semantic interpretation as a type test! By testing whether its argument is the NIL object, it's also perpetrating whether the argument is of the NULL type. And so that type name jibes with the name of the ancient NULL function.

Yes, in Common Lisp, NIL is a value (it's a symbol, and by convention also the empty list).

But when used as a type specifier, NIL denotes the empty set. So no Lisp object is of that type, and an array with that element type cannot store any object.

The value NIL has type NULL.

No value has type NIL.