是否有可能破解 Lisp 阅读器以“允许”其中包含点的列表?

问题描述 投票:0回答:1

是否有可能出现以下行为?如果我从标准输入中读取

'(a . b . c)
,我希望 lisp
read
函数产生与
(list (intern "A") (intern ".") (intern "B") (intern ".") (intern "C"))
相同的结果。

目前,它(SBCL)会触发解析错误,告知列表不能以点开头,或者该点不能多次使用,这是完全正常的。但是,我想知道是否有可能即时捕获

SIMPLE-READER-ERROR
并相应地调整流。

我能够捕获错误并重新启动,但我不知道如何动态调整流。可以吗?

common-lisp
1个回答
0
投票

免责声明:这是在 Emacs Lisp 中运行的,不知道它是否在其他地方有效。

当我进入时

(list (intern "A") (intern ".") (intern "B") (intern ".") (intern "C"))

这给出了结果

(A \. B \. C)

所以,使用这个“建议”,我可以毫无错误地输入:

'(A \. B \. C)
© www.soinside.com 2019 - 2024. All rights reserved.