Racket cons两个元素输出错误的结果

Racket cons两个元素输出错误的结果,racket,cons,Racket,Cons,我需要从元素和列表中创建一对 然而,当我做(cons2(list 1 2 3))时,我得到(2(1 2 3)),我想要得到(2.(1 2 3)) 我怎样才能得到点呢?因为(cons a b)与(a.b)相同,我们得到(2.(1.2.3))与(cons 2(列表1.2.3)相同,这与(列表2.1.2.3)相同。确认: #lang racket 请注意,打印机打印的是(2 1 2 3),而不是(2.(1 2 3))。打印机仅在绝对需要时才尝试使用点。解释结构的语法、存储方式和显示方式之间存在差异

我需要从元素和列表中创建一对

然而,当我做
(cons2(list 1 2 3))
时,我得到
(2(1 2 3))
,我想要得到
(2.(1 2 3))
我怎样才能得到点呢?

因为
(cons a b)
(a.b)
相同,我们得到
(2.(1.2.3))
(cons 2(列表1.2.3)
相同,这与
(列表2.1.2.3)
相同。确认:

#lang racket

请注意,打印机打印的是
(2 1 2 3)
,而不是
(2.(1 2 3))
。打印机仅在绝对需要时才尝试使用点。

解释结构的语法、存储方式和
显示方式之间存在差异

对于包含两个元素的列表,有两种方式可以表示它
(1)
(1.()
。当显示此列表时,它将始终首选括号最少的一个。因此
”(2.(1.2 3))
将始终打印为
(2.1.2.3)
by
display
。如果你不想这样,你可以让自己成为一个
cons写
的人,比如:

;;图标始终以虚线显示
(定义(cons写入x)
(如果(第x对)
(开始
(显示“(”)
(犯人写(x车))
(显示“);空格很重要
(cons写入(cdr x))
(显示“)”)
(写x)))
(犯人写(1234));印刷品(1.(2)(3)(4)。)
使用
(cons2(列表1233))
您不会得到
(2(1233))
> (cons 2 (list 1 2 3))
'(2 1 2 3)

> '(2 . (1 2 3))
'(2 1 2 3)