gpt4 book ai didi

macros - 可以使用 destructuring-bind 定义 destructuring-setq 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:47:33 27 4
gpt4 key购买 nike

有 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))

最佳答案

这将是一项非常重要的工作。

你需要做的是写一个 lambda-list analyzer这将

  1. 找到所有要绑定(bind)的变量
  2. 将它们替换为 gensym s(或使用 copy-symbol 来表示宏展开式完全不可读 :-) 并保留从旧符号到新符号的映射。

返回类似的东西

(destructuring-bind (new-lambda-list)
expression
(setq old-var-1 new-gensym-1 ...))

分析器存在于任何 Common Lisp 实现中(例如,参见上面的链接)并且它简单。

我建议你问问自己是否destructuring-bind 真的还不够。

关于macros - 可以使用 destructuring-bind 定义 destructuring-setq 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com