gpt4 book ai didi

macros - Racket 宏,变量名称及其值的打印列表

转载 作者:行者123 更新时间:2023-12-02 05:18:36 26 4
gpt4 key购买 nike

我有这个宏:

(define-syntax inspect
(syntax-rules ()
[(_ x) (printf "~a is: ~a\n" 'x x)]))

它的工作原理是这样的:

(let ([x 2]) (inspect x))
>> x is: 2

但我想做的是扩展它,这样我就有了

(_ x ...)

并遍历提供的各种值,相应地打印出它们的变量名称和值。

  (let ([x 2] [y 3]) (inspect x y))
>> x is: 2
y is: 3

我有点卡在这部分了。

例如,像这样:

(define-syntax (inspect stx)
(datum->syntax
stx
(for ([i (cdr (syntax->list stx))])
(printf "~a is: ~a" (syntax->datum i) i))))

我不确定如何在最后一行获得 i 的值。

感谢任何帮助。

谢谢。

最佳答案

不需要双模式规则——您可以使用 begin 来完成整个事情:

(define-syntax-rule (inspect x ...)
(begin (printf "~a is: ~a\n" 'x x) ...))

关于macros - Racket 宏,变量名称及其值的打印列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249178/

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