macros - 用于父脚本的 Macroexpand

标签 macros common-lisp parenscript

对于 parenscript 宏,是否有与 macroexpand 或 macroexpand-1 等效的东西?做 (ps (some macro expression))将显示生成的 javascript,但有时在它被转换为 javascript 之前看到 parenscript 会很好。

最佳答案

在原稿的 compiler.lisp文件,有功能ps-macroexpand-1ps-macroexpand .不幸的是,它们不是由 parenscript 包导出的。您无论如何都可以使用双冒号来调用它们。

例如,

(defpsmacro aif (test true &rest false)
  `(let ((it ,test))
     (if it ,true ,@false)))

(ps::ps-macroexpand-1 '(aif 3 it))
;;=>
(LET ((IT 3))
  (IF IT
      IT))
T

关于macros - 用于父脚本的 Macroexpand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929138/

相关文章:

lisp - 如何在普通 lisp 中从一个奇数对和偶数对的单个列表创建列表列表

windows - CFFI 没有加载依赖库?

javascript - Parenscript 和隐式 Return

c - 如何使宏的第一次调用不同于所有后续调用?

c++ - 从单个定义创建字符串和宽字符串文字

macros - 用于调用数据集并将其连接起来的宏

macros - 如何将命名循环标签传递给 Rust 中的宏?

lisp - 让我的 lisp 代码更健壮