下面是一个尝试根据变量的值将不同的字符串写入stdout的示例:
(let ((x 1))
(cond ((< x 2)
(display "hooray"))
(else
(display "bummer")))
)注意,正确的字符串确实会被写入,但我们也会得到一个“未指定的返回值”。
我的理解是,这是因为解释器试图将子句的“后继表达式”的值作为条件值返回,但是“显示”表达式不返回任何值。
有更好的方法吗?
发布于 2015-07-10 21:17:54
如果这个表达式只根据其效果(打印消息)进行计算,那么您应该显式地返回一个值(任何值!)作为let表单的结果:
(let ((x 1))
(cond ((< x 2)
(display "hooray")
(newline))
(else
(display "bummer")
(newline)))
'ok)现在我们会得到:
hooray
'okhttps://stackoverflow.com/questions/31349638
复制相似问题