有解构绑定,但似乎没有解构setq。是否可以使用解构绑定来定义它?
(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))
有解构绑定,但似乎没有解构setq。是否可以使用解构绑定来定义它?
(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))
这将是一项非常重要的努力。
您需要做的是编写一个lambda-list 分析器,它将
copy-symbol
用于宏扩展的完全不可读性:-),并保留从旧符号到新符号的映射。返回类似的东西
(destructuring-bind (new-lambda-list)
expression
(setq old-var-1 new-gensym-1 ...))
分析器存在于任何 Common Lisp 实现中(例如,参见上面的链接),而且它并不简单。
我建议你问问自己是否destructuring-bind
真的不够。