2

当我在 REPL 提示符下输入:

(setf (readtable-case *readtable*) :invert)

我收到此错误消息:

Error in SETF [or a callee]: Cannot expand the SETF form (READTABLE-CASE
                                                          *READTABLE*).

为什么我会收到此错误?

4

1 回答 1

3

(format nil "~A ~A" (lisp-implementation-type) (lisp-implementation-version))说“京都通用 Lisp GCL 2.6.2”。结果(eq 'readtable-case 'cl:readtable-case)是 T。请问这都是什么意思?

第二个表达式意味着您使用了正确的符号。第一个指示您使用的是哪个 Lisp 实现:应该是GNU Common Lisp 2.6.2

经过一番搜索,我在 gcl-devel 列表中找到了这条消息,上面写着......

问题似乎是这一行:

(setf (readtable-case *readtable*) readcase)

在随机检查可读性中。我建议将此作为下一个要解决的 ansi 问题,因为它会阻止测试。

...主题为“ansi-tests in 2.7.0”。该消息来自 2004 年。

底线:我猜你需要一个更新的甚至* 一个不同的 Lisp 实现。

(* 如 Rainer Joswig 所述,该问题也会影响当前的 2.6.12 版本)


我猜所有主要的 Lisp 实现都支持这一点。CLISP 2.49可以,SBCL 和 CCL 可能可以,据我所知 ECL 也可以。

于 2015-11-21T23:15:04.823 回答