关于Scheme cons和点符号

时间:2013-01-12 02:04:03

标签: scheme cons

鉴于

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

当我们尝试

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

使用.的地方是什么?这些结构的记忆表示是什么?

1 个答案:

答案 0 :(得分:3)

Scheme实现通常以列表形式打印看起来像列表的内容:

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

在您的示例中,如果(cons 3 (cons 1 2))不是最后一个2,则2将是一个列表。因此,您的实现会尽力将其打印为列表,直到{{1}}。另一个示例不包含任何看起来像列表的部分,因此它只是作为嵌套对打印。