【发布时间】:2021-10-15 14:19:18
【问题描述】:
(define x '())
x
在 repl 控制台中给出 => '()
(define x '())
(display x)
给 => () 但我想像 '() 一样打印它
如何让显示打印'()而不是()?
我需要这个,因为我的函数正在记录用户提供的错误输入的错误,我只想将'() 输入打印为'(),有点像运行以下命令时方案的方式:
(define x '())
(cdr x)
给 =>
mcdr: contract violation
expected: mpair?
given: '() (Note the ')
【问题讨论】:
-
将空列表打印为
'()是一种敲诈勒索;我不记得曾经见过 Scheme 实现这样做,即使在错误消息中也是如此。这是使用 Racket 的 RnRS 语言之一编写 Scheme 代码的一种方式,与使用专用的 Scheme 实现不太一样。您可以在需要时手动添加单引号。