why second argument to cons must be a list
scheme, the-little-schemer
Solution
The second argument to `cons` is not necessarily a list. It's a list only if you're, well, building a list (proper or otherwise). It's perfectly valid if the `cdr` part of a `cons` cell is not a list, for example, when building an association list:
(define lookup-table (list (cons 'x 10) (cons 'y 20) (cons 'z 30)))
(assoc 'z lookup-table)
=> '(z . 30)
Problem
I'm reading the book called the little schemer. Before read that, i've finished reading first three chapter of SICP. My question is that why second argument to cons must be a list. However, `(cons a b)` works for all values a and b and `(car (cons a b))` = a `(cdr (cons a b))` = b