destructuring-bind はありますが、destructuring-setq はないようです。destructuring-bind を使用して定義することは可能ですか?
(let (a b c d)
(destructuring-setq ((a b) (c d)) '((1 2) (3 4)))
`(,b ,d))
(destructuring-bind
((a b) (c d)) '((1 2) (3 4))
`(,b ,d))
destructuring-bind はありますが、destructuring-setq はないようです。destructuring-bind を使用して定義することは可能ですか?
(let (a b c d)
(destructuring-setq ((a b) (c d)) '((1 2) (3 4)))
`(,b ,d))
(destructuring-bind
((a b) (c d)) '((1 2) (3 4))
`(,b ,d))
これは非常に重要な試みです。
あなたがしなければならないことは、ラムダリストアナライザー を書くことです
copy-symbol
、マクロ展開を完全に読みにくくするために使用します :-)、古いシンボルから新しいシンボルへのマップを保持します。次のようなものを返します
(destructuring-bind (new-lambda-list)
expression
(setq old-var-1 new-gensym-1 ...))
アナライザーは、どの Common Lisp 実装にも存在し (上記のリンクなどを参照)、単純ではありません。
本当に十分destructuring-bind
ではないかどうかを自問することをお勧めします。