为什么要写'(1 2 3)而不是(1 2 3)?
> (list 1 2 3)
'(1 2 3)
答案 0 :(得分:5)
Racket的默认打印机将值打印为表达式,该值将计算为等效值(如果可能)。它尽可能使用quote
(缩写'
);如果值包含不可引用的数据结构,则它使用构造函数。例如:
> (list 1 2 3)
'(1 2 3)
> (list 1 2 (set 3)) ;; sets are not quotable
(list 1 2 (set 3))
大多数Lisps和Schemes使用write
函数打印值。您可以使用write
参数将Racket打印机更改为print-as-expression
模式,如下所示:
> (print-as-expression #f)
> (list 1 2 3)
(1 2 3)
有关详细信息,请参阅the docs on the Racket printer。