ray
ray

Reputation: 145

why second argument to cons must be a list

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

Upvotes: 4

Views: 1054

Answers (2)

user825628
user825628

Reputation: 189

Not all implementations of Lisp allow a non-list as the second argument to cons. For example, see https://scheme.cs61a.org/

Upvotes: 1

Óscar López
Óscar López

Reputation: 235984

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)

Upvotes: 4

Related Questions