有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))
答案 0 :(得分:3)
这将是一项非常重要的努力。
你需要做的是写一个lambda-list analyzer
copy-symbol
以获取宏展开的完全不可读性:-)并保留旧符号到新符号的映射。返回类似
的内容(destructuring-bind (new-lambda-list)
expression
(setq old-var-1 new-gensym-1 ...))
分析器存在于任何Common Lisp实现中(例如,参见上面的链接),它不简单。
我建议您问问自己destructuring-bind
是否还不够。