【发布时间】:2012-09-15 09:50:24
【问题描述】:
我正在尝试创建一个类,该类可以将符号向量存储在 SBCL 的插槽中。我不知道如何设置它。
到目前为止我最好的猜测是
(defclass Individual ()
((discrete-decisions :type (vector symbol))))
这会返回以下错误:
keyword argument not a symbol:
(DISCRETE-DECISIONS :TYPE (VECTOR SYMBOL)).
[Condition of type SB-INT:SIMPLE-PROGRAM-ERROR]
一些实验表明,将类型更改为 symbol 会返回相同的错误。我认为symbol 是 Common Lisp 中的有效类型……我错了吗?
我怎样才能让它工作?
[编辑]
我遇到的上述问题是在 Emacs 24.2 下的 09-22-2012 Slime 版本中运行 SBCL 1.0.58。当我从命令行运行 SBCL 1.0.58 时,没有问题。这似乎不是 SBCL 问题...
【问题讨论】:
-
顺便说一句,在默认安全设置中,SBCL 不会检查插槽类型
-
我在 Windows 7 上使用 SBCL 1.0.58。这可能是一个错误吗?
-
可能是,您应该查阅 sbcl 邮件列表
-
spec 表示在槽中存储另一种类型的值的效果是未定义的。因此,期望检查类型不是“可移植的”。另一种方法是不指定类型并使用
check-type测试自己。
标签: lisp common-lisp sbcl clos