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)
bydisplay
。如果你不想这样,你可以让自己成为一个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)