一般的な 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
、構造体を使い続けるべきですか、それとももっと良い方法がありますか?