如何在球拍中查看扩展的宏?

How can I see expanded macros in racket?

我得到了这个答案关于编写一个简单的宏来记录宏扩展时的时间,然后总是returns那个时间。

#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) 的扩展版本? (用于调试更复杂的)

您可以使用

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

在 DrRacket 回复中

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

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

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