gpt4 book ai didi

macros - 让出 Lambda : symbolic representation in macros

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

Doug Hoyte 在他对 Let Over Lambda 的介绍中将 symb 函数定义为使用宏进行元编程的基本实用程序:

在剪辑中:

(defun mkstr (&rest args)
(with-output-to-string (s)
(dolist (a args) (princ a s))))

(defun symb (&rest args)
(values (intern (apply #'mkstr args))))

为什么符号在宏编程中如此重要?

最佳答案

Symbols name 函数和宏,所以如果你的宏定义了函数,它就必须构造符号。

例如,当您执行 (defstruct foo a b c) 时,您正在定义这些函数:

  1. MAKE-FOO
  2. FOO-P
  3. COPY-FOO
  4. FOO-A
  5. FOO-B
  6. FOO-C
  7. (SETF FOO-A)
  8. (SETF FOO-B)
  9. (SETF FOO-C)

这需要构建上面的 6 个符号。

附言。您可能会发现 (macroexpand-1 (defstruct foo a b c)) 的输出很有启发性。

关于macros - 让出 Lambda : symbolic representation in macros,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36160499/

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