是否有可能出现以下行为?如果我从标准输入中读取
'(a . b . c)
,我希望 lisp read
函数产生与 (list (intern "A") (intern ".") (intern "B") (intern ".") (intern "C"))
相同的结果。
目前,它(SBCL)会触发解析错误,告知列表不能以点开头,或者该点不能多次使用,这是完全正常的。但是,我想知道是否有可能即时捕获
SIMPLE-READER-ERROR
并相应地调整流。
我能够捕获错误并重新启动,但我不知道如何动态调整流。可以吗?
免责声明:这是在 Emacs Lisp 中运行的,不知道它是否在其他地方有效。
当我进入时
(list (intern "A") (intern ".") (intern "B") (intern ".") (intern "C"))
这给出了结果
(A \. B \. C)
所以,使用这个“建议”,我可以毫无错误地输入:
'(A \. B \. C)