I realize this is a total n00b question, but I’m curious and I thought I might get a better explanation here than anywhere else. Here’s a list (I’m using Dr. Scheme)
> (list 1 2 3)
(1 2 3)
Which I think is just sugar for this:
> (cons 1 (cons 2 (cons 3 null)))
(1 2 3)
This, on the other hand, does something else:
> (cons 1 (cons 2 3))
(1 2 . 3)
My questions is, why is that different? What’s the point of requiring the null at the end of the list?
The definition of a list is recursive.
So these are lists:
The last example you gave cons 2 3 does not conform to this list definition so its not a list. That is cons accepts an item and a list. 3 is not a list.