如何在球拍中查看扩展的宏?
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右上角的按钮:图标是#
和播放符号的组合。
我得到了这个答案
#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右上角的按钮:图标是#
和播放符号的组合。