5

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も同じエラーが返されることが示されています。Common Lisp では有効な型だと思っていsymbolましたが、間違っていますか?

どうすればこれを機能させることができますか?

[編集]

上記の問題は、2012 年 9 月 22 日の Slime ビルドで Emacs 24.2 の下で SBCL 1.0.58 を実行したときに発生しました。コマンドラインから SBCL 1.0.58 を実行しても問題ありません。これは SBCL の問題ではないようです...

4

2 に答える 2

3

私はおそらく手遅れであることを知っていますが、安全のために最適化で classe 宣言をラップする必要があります。例えば:

(locally (declare (optimize safety))
    (defclass test-class ()
      ((some-slot :type real :initarg :some-slot :accessor :test-some-slot))))
于 2013-05-03T21:22:12.243 に答える