Common Lisp:使用readtable-case获取错误

时间:2015-11-21 14:59:32

标签: lisp common-lisp gnu-common-lisp

当我在REPL提示下输入时:

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

我收到此错误消息:

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

为什么我会收到此错误?

1 个答案:

答案 0 :(得分:3)

  

(format nil "~A ~A" (lisp-implementation-type) (lisp-implementation-version))说"京都Common Lisp GCL 2.6.2"。 (eq 'readtable-case 'cl:readtable-case)的结果是T.这一切意味着什么?

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

经过一番搜索,我发现message on the gcl-devel list有人说......

  

问题似乎是这一行:

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

随机检查 - 可读性。我推荐下一个   ansi要解决的问题,因为它阻止了测试。

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

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

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

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