对的虚线语法
有一种特殊的语法允许我们以比使用 cons 构造函数更紧凑的方式编写 cons 单元格。
一对可以写成:
'(1 . 2) == (cons 1 2)
最大的区别是我们可以使用 quote 创建 pairs。否则,Scheme 会创建一个合适的列表 (1 . (2 . '()))。
点语法强制表达式只有 2 个成员。每个成员可以是任何类型,包括成对。
'(1 . (2 . (3 . 4)))
> (1 2 3 . 4)
请注意,不正确的列表应在末尾带一个点,以显示最后一对列表的 cdr 不是空列表'()。
这种显示列表的方式有时令人困惑,因为下面的表达式将表达不像人们期望的那样。
'((1 . 2) . ( 3 . 4))
> ((1 . 2) 3 . 4)
由于列表通常跳过 .,列表的第一个参数将是 (1 . 2),第二个参数将是 3,但由于列表不合适,最后的 . 显示为显示列表的最后一个元素不是'()。甚至想到,数据以不同的方式显示,内部数据就像创建时一样。