CommonLisp Scheme Part10
■ このスレッドは過去ログ倉庫に格納されています
0189デフォルトの名無しさん
NGNGどうやったら gensym を使うように改良できますか?
使い方は、(setq alist '((a 2) (b 3))) と代入しておいてから
(alist-bind alist (print (+ a b)) (* a b)) を評価すると、
5 を印字してから 6 を返すような関数です。
現状はこんな感じです。
(defmacro alist-bind (alist &body body)
(let ((alist-bind-internal-variable (eval alist)))
`(multiple-value-bind
,(values (mapcar #'car alist-bind-internal-variable))
,(cons 'values (mapcar #'cadr alist-bind-internal-variable))
,@body)))
バッククオートを入れ子にして使うのがどうしてもうまくいかなくて
ほかと重ならない変数名で逃げてます。実用上は問題ないんですが
もっとスマートな解決策はないものでしょうか。
■ このスレッドは過去ログ倉庫に格納されています