문제

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

도움이 되었습니까?

해결책

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)

다른 팁

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top