gpt4 book ai didi

emacs - elisp mapcar + lambda + defmacro 帮助

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

我正在尝试使用宏生成函数:

(defmacro make-my-emacs-command-region (cmd name)
(list 'defun (intern (format "my-emacs-command-%s-%s" cmd name))
'(&optional arg)
(list 'interactive "p")
(list (intern (format "mark-%s" name)) 'arg)
(list (intern (format "my-emacs-command-%s-region" cmd))
'(region-beginning) '(region-end))))

生成器:

(mapcar (lambda (a) (make-my-emacs-command-region a buffer))
'(foo bar))

但是我得到:

my-emacs-command-a-buffer

我做错了什么?如何强制传递 a 的值?

最佳答案

lisp 宏的一个要点是参数 求值。阅读 macro pages in the manual ,特别是 expansion of macros . macroexpand 函数可用于调试问题。另外,backquote可能会帮助您更简洁地编写宏的主体。

关于emacs - elisp mapcar + lambda + defmacro 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982559/

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