編集:質問を再構築したので、(うまくいけば)答えやすくなります。私は CL を初めて使用するので、何をしようとしているのかを説明するのが難しい場合があります。
私は過去数週間にわたっていくつかの Common Lisp を学んでおり、クラスのスロット値のいくつかを定義する構成ファイルを指定してオブジェクトのインスタンスを作成する最良の方法を考えていますが、値は何らかの形式で正規化する必要があります割り当てられる前に。
したがって、簡単な例として、次のクラスがあるとします。
(defclass my-class ()
((name
:initarg :name
:accessor name)
(x
:initarg :x
:initform 10
:accessor x)
(y
:initarg :y
:initform nil
:accessor y)))
と
(defmethod initialize-instance :after ((obj my-class) &key)
(with-slots (x y)
obj
(setf y (* 2 x))))
外部ファイルで指定する方法が欲しいです。instance-a.lisp
(possibly-some-macro "A"
:x 5)
ただし、インスタンスを構築するときは、値 x を最初に何らかの方法で正規化する必要があります。への最終的な呼び出しは次のmake-instance
ようになります。
(make-instance 'my-class
:name (name-value-from-config)
:x (normalize (x-value-from-config))
どこ(name-value-from-config)
が「A」で、(x-value-from-config) が 5 になります。 注: これらの 2 つの形式は、構成からの値で構築する必要があることを示すプレースホルダーとしてのみここにあります。
私の最初の考えは、構成ファイルにあるものはすべて、適切なキーを持つハッシュ テーブルまたは plist に変換することです。