我正在尝试学习如何在球拍中编写宏。 我已经完成了出色的Fear of Macros教程,现在尝试尝试一些基本思想。
因此,我对my-if
的定义与本教程中显示的略有不同,并且在以下地方出现了错误define-values: unbound identifier;
:
#lang racket/base
(define-syntax (my-if stx)
(define-values (_ condition yes no)
(apply values (syntax->list stx)))
(datum->syntax stx `(if ,condition ,yes ,no)))
如果我使用#lang racket
而不是racket/base
,就可以使用。
在《手册》中查找define-values
的定义,它似乎是racket/base
的一部分!
define-values provided from racket/base, racket
那为什么Racket对此有所抱怨?
答案 0 :(得分:4)
在阶段1(编译时)也使用(require (for-syntax racket/base))
导入racket/base
。使用#lang racket/base
仅在阶段0(运行时)提供define-values
。