gpt4 book ai didi

macros - 在 Common Lisp 中,如何定义一个扩展为空的宏(而不是 `nil` )?

转载 作者:行者123 更新时间:2023-12-04 17:10:21 25 4
gpt4 key购买 nike

我想定义一个可以注释 s 表达式的宏,例如:

我希望

(list 1 2 (comment-macro (something))) -> (1 2)

但是如果我这样定义宏
(defmacro comment-macro (x))

上述形式的结果实际上是
(1 2 nil)

最佳答案

您无法使用常规宏完成您想要的操作,因为它将始终使用其主要值(或 nil,如果没有返回值)。

但是,有两种常见的选择:

  • 评论: #| ... |# - 一般文本
  • 特征表达式: #+(or) ... #-(and) ... -(暂时?)禁用代码

  • 您也可以定义自己的 read macros使用 set-macro-character set-dispatch-macro-character .

    关于macros - 在 Common Lisp 中,如何定义一个扩展为空的宏(而不是 `nil` )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721727/

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