Я пытаюсь научиться писать макросы в Racket.
Я прошел превосходный урок Страх перед макросами и сейчас пытаюсь поэкспериментировать с основными идеями.
Итак, я определил 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
Так почему же Ракет жалуется на это?