if pair end with a space char,
why result value contains one dot(.)?
what does this dot(.) mean?
(cons 1 2 )
;Value 2: (1 . 2)
(car (cons 1 2 ))
;Value: 1
(cdr (cons 1 2 ))
;Value: 2
this one seems stupid, because pair only contain two element.
i just want to know why the first expression echo one dot in the result!
(cadr (cons 1 2 ))
;The object 2, passed as an argument to safe-car, is not a pair.
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.
thanks!
CONS constructs a pair. A pair of two things. It is written as
(firstthing . secondthing).If the second thing is an empty list, it is written as
(firstthing). It is the same as(firstthing . ()).Since
consconstructs a cons, the result of(cons 1 2)is(1 . 2).(cadr (cons 1 2))is an error. It is(car (cdr (cons 1 2)).(cdr (cons 1 2)is2. Now(car 2)is wrong. You can’t take the car of2.2is a number, not a cons.If you want to create a list, which is made of cons cells or the empty list, then use the function
list.