我已经编写了 Scheme 的 s-expression 注释 ( SRFI 62 ) 的 Common Lisp 实现:
(eval-when (:compile-toplevel
:load-toplevel
:execute)
(set-dispatch-macro-character #\# #\;
(lambda (stream char n)
(declare (ignore char))
(when n
(error "Infix parameter not allowed in s-expression comment."))
(read stream) ; Discard the s-expression.
(values))))
根据我对The RECURSIVE-P argument 的阅读,我的实现似乎不正确。我必须(read stream t nil t)
改用(recursive-p
即将参数设置为t
)。我的理解正确吗?
我一直在使用上面明显不正确的实现,它似乎运行正常。如果我继续使用(read stream)
而不是会发生什么(read stream t nil t)
?