为什么'(1 2 3)写而不是(1 2 3)?
> (list 1 2 3)
'(1 2 3)
Run Code Online (Sandbox Code Playgroud)
Racket的默认打印机将值打印为表达式,该值将评估为等效值(如果可能).它可以使用quote(缩写'); 如果值包含不可引用的数据结构,则它使用构造函数.例如:
> (list 1 2 3)
'(1 2 3)
> (list 1 2 (set 3)) ;; sets are not quotable
(list 1 2 (set 3))
Run Code Online (Sandbox Code Playgroud)
大多数Lisps和Schemes使用write函数打印值.您可以write使用print-as-expression参数将Racket的打印机更改为模式,如下所示:
> (print-as-expression #f)
> (list 1 2 3)
(1 2 3)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Racket打印机上的文档.