gpt4 book ai didi

macros - 为什么 define-values 没有绑定(bind)在带有#lang racket/base 的 Racket 宏中?

转载 作者:行者123 更新时间:2023-12-01 12:09:27 25 4
gpt4 key购买 nike

我正在尝试学习如何在 Racket 中编写宏。我经历了优秀的Fear of Macros教程,现在我正在尝试对基本思想进行实验。

所以我定义的 my-if 与教程中显示的略有不同,我收到错误 define-values: unbound identifier; in:

#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 它会起作用。

在Manual中查找define-values的定义,好像是racket/base的一部分!

define-values  provided from racket/base, racket

那么为什么 Racket 会提示这个呢?

最佳答案

同样在阶段 1(编译时)使用 (require (for-syntax racket/base)) 导入 racket/base。使用 #lang racket/base 仅在阶段 0(运行时)提供 define-values

关于macros - 为什么 define-values 没有绑定(bind)在带有#lang racket/base 的 Racket 宏中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com