0

ペアがスペース文字で終わる場合、結果値に1つのドット(。)が含まれるのはなぜですか?このドット(。)はどういう意味ですか?

(cons 1 2 )
;Value 2: (1 . 2)

(car (cons 1 2 ))
;Value: 1

(cdr (cons 1 2 ))
;Value: 2

ペアには2つの要素しかないため、これはばかげているようです。

最初の式が結果に1つのドットをエコーする理由を知りたいだけです!

(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.

ありがとう!

4

2 に答える 2

5

CONSはペアを構築します。2つのもののペア。と書かれてい(firstthing . secondthing)ます。

2番目のものが空のリストである場合、それはとして書き込まれ(firstthing)ます。と同じ(firstthing . ())です。

cons短所を作成するので、の結果は(cons 1 2)です(1 . 2)

(cadr (cons 1 2))エラーです。です(car (cdr (cons 1 2))(cdr (cons 1 2)です2。今(car 2)は間違っています。の車は乗れません22は数字であり、短所ではありません。

consセルまたは空のリストで構成されるリストを作成する場合は、関数を使用しますlist

于 2012-11-15T08:14:05.880 に答える
0

ドットは結果の「要素」ではなく、Schemeがリストを記憶する方法です。つまり連結されたペアです。

たとえば、リスト

(1 2 3)

この形式で記憶されます:

(1 . (2 . (3 . ())))
于 2012-11-15T08:12:29.007 に答える