8

一般的な Lisp では、スロット名/シンボルを使用して構造体スロットにアクセスするには、何を使用できますか?

私が欲しいのは

(defstruct point (x 0) (y 0))    
(defmacro -> (struct slot) `(slot-value ,struct ,slot))

(setf p (make-point))
(setf (slot-value p 'x) 1)
(setf (-> p 'y) 2)

私はclozure clを使用しています.clozure clではこれが機能します。ただし、知る限り、これは非標準の動作です (「未定義の動作」C++ と同等)。別の CL 実装に切り替えるつもりはないので slot-value、構造体を使い続けるべきですか、それとももっと良い方法がありますか?

4

1 に答える 1