2

与えられた

#;> (cons (cons 1 2) 3)
((1 . 2) . 3)

試してみると

#;> (cons 3 (cons 1 2))
(3 1 . 2)

.が使用される場所を管理するものは何ですか? これらの構造のメモリ表現はどうなるでしょうか?

4

1 に答える 1

3

スキームの実装は通常、リスト形式のリストのように見えるものを出力します。

-> (cons 1 (cons 2 '()))
'(1 2)

あなたの例で(cons 3 (cons 1 2))は、それが最後のものでなければリストになります2。したがって、実装は、までリストとして出力するように最善を尽くします2。もう1つの例には、リストのように見える部分が含まれていないため、ネストされたペアとして出力されます。

于 2013-01-12T02:29:31.460 に答える