【问题标题】:Macroexpand for parenscript宏扩展为 parenscript
【发布时间】:2016-02-28 23:43:32
【问题描述】:

parenscript 宏是否有等效于 macroexpand 或 macroexpand-1 的方法?执行(ps (some macro expression)) 将显示生成的 javascript,但有时在转换为 javascript 之前看到 parenscript 会很好。

【问题讨论】:

  • 嗯,您可以将宏定义为 (non parenscript, normal lisp) 宏,然后以通常的方式对其进行宏扩展。我想这应该适用于很多情况,但它当然只是一个 hack。

标签: macros common-lisp parenscript


【解决方案1】:

在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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多