Syntax 如何在Scheme或Racket中宏扩展语法规则宏?

Syntax 如何在Scheme或Racket中宏扩展语法规则宏?,syntax,macros,scheme,racket,Syntax,Macros,Scheme,Racket,我有这个宏 (定义语法扩展调试) (语法规则() [(#x)(语法->数据(扩展到顶部形式#'x))]) 这在球拍上很好用。我正试图了解(srfi-26)的扩展情况。文件无法加载 我知道球拍是不同的语言,但为什么这不起作用?如何加载文件?我试过这个: 出现错误: _cut.scm:39:0: #%top-interaction: unbound identifier; also, no #%app syntax transformer is bound at: #%top-interac

我有这个宏

(定义语法扩展调试)
(语法规则()
[(#x)(语法->数据(扩展到顶部形式#'x))])
这在球拍上很好用。我正试图了解(srfi-26)的扩展情况。文件无法加载

我知道球拍是不同的语言,但为什么这不起作用?如何加载文件?我试过这个:

出现错误:

_cut.scm:39:0: #%top-interaction: unbound identifier;
 also, no #%app syntax transformer is bound
  at: #%top-interaction
  in: (#%top-interaction define-syntax srfi-26-internal-cut (syntax-rules (<> <...>) ((srfi-26-internal-cut (slot-name ...) (proc arg ...)) (lambda (slot-name ...) ((begin proc) arg ...))) ((srfi-26-internal-cut (slot-name ...) (proc arg ...) <...>) (lambda (...
  location...:
   _cut.scm:39:0
  context...:
   do-raise-syntax-error
   expand-capturing-lifts
   temp118_0
   temp91_0
   compile15
   temp85_0
   loop
   "/home/kuba/projects/jcubic/lips/_r.scm": [running body]
   temp37_0
   for-loop
   run-module-instance!125
   perform-require!78
我对球拍不太熟悉。我真正的问题是,我希望在任何方案实现中看到扩展,以便在中调试语法规则。扩展到:

(do((i 1(+i 1)))
(=I6))
(打印(eval`(宏扩展(剪切a b),i)))
(#:srfi-26-internal-cut()()a b)
(#:srfi-26-内部切割(#:x)(#:x)a b)
(#:srfi-26-内部切割(#:x)(#:x a)b)
(#:srfi-26-内部切割(#:x#:x)(#:x a#:x))
(#:lambda(#:x#:x)(#:begin#:x)a#:x))
我想看看适当的扩展应该是什么样子。您是否知道任何其他可以扩展语法规则宏的方案实现(对于宏,有
macroexpand
的替代方案)

编辑

我已经解决了cut宏的问题,但我仍然想知道如何在任何方案实现中使用macroexpand。最好是R7RS兼容