【问题标题】:How can I see expanded macros in racket?如何在球拍中看到扩展的宏?
【发布时间】:2022-01-16 04:39:35
【问题描述】:

我得到了这个答案https://stackoverflow.com/a/70318991 关于编写一个简单的宏来记录宏扩展时的时间,然后总是返回那个时间。

#lang racket

(begin-for-syntax
  (define the-time (current-seconds)))

(define-syntax (macro-expansion-seconds stx)
  (datum->syntax stx the-time))

(macro-expansion-seconds)
(macro-expansion-seconds)
(macro-expansion-seconds)

效果很好,但现在有没有一种简单的方法可以在不评估的情况下查看 (macro-expansion-seconds) 的扩展版本? (用于调试更复杂的)

【问题讨论】:

    标签: racket lisp-macros


    【解决方案1】:

    你可以使用

    (expand #'(macro-expansion-seconds))
    

    在 DrRacket repl.

    它将向您显示语法对象的图形表示 - 请记住单击小箭头!在 Mythical Macros 中我写了一些语法对象。

    https://soegaard.github.io/mythical-macros/

    另一种方法是使用“宏步进器”。点击DrRacket右上角的按钮:图标由#和播放符号组成。

    【讨论】:

    • 对不起 - 你的两个答案中的第二个应该很明显,除了我使用的是 emacs。非常感谢。谢谢 - 我会读你的书。这可能就是我真正想要的!
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    相关资源
    最近更新 更多