Emacs Lisp 2
■ このスレッドは過去ログ倉庫に格納されています
0258デフォルトの名無しさん
NGNG>やりたいことは"文字列で渡された関数名に対応した関数に、
>値をsetfすること"です。
手順1: "monyo"という文字列がnameという変数に設定された。(setq name "monyo")
手順2: 関数"monyo"を定義する。(fset (intern name) #'(lambda (arg) (car arg)))
手順3: (setq list (list 'a 'b)) => (a b) (setf (monyo list) 'x) => x, list => (x b)
が機能するようにしたい。
手順4: CLパッケージのマニュアル"(cl)Customizing Setf"にある定義用マクロ
defsetfかdefine-setf-methodで定義する。defsetfの簡単な方を使うとき。
(defun defsetf-name (access-fn-name update-fn)
(eval `(defsetf ,(intern access-fn-name) ,update-fn)))
を定義しておく。
手順5: 動的に(defsetf-name name 'setcar)を呼び出す。
どう?
■ このスレッドは過去ログ倉庫に格納されています