gpt4 book ai didi

macros - 我可以制作一个扩展为多个值的宏吗?

转载 作者:行者123 更新时间:2023-12-04 04:39:14 25 4
gpt4 key购买 nike

有没有办法定义 Racket 宏foo以至于

(list 1 (foo 2 3) 4)

扩展为
(list 1 2 3 4)

?

最佳答案

正如其他答案所提到的,您不能将宏扩展为多个值,并将其拼接到调用上下文中。但是你可以使用 quasiquotation 做类似的事情。

假设你的宏适合返回一个列表,你可以这样做(对于你给定的例子):

`(1 ,@(foo 2 3) 4)

示例(在 Racket 中测试):
> `(1 ,@(map sqrt '(2 3)) 4)
'(1 1.4142135623730951 1.7320508075688772 4)

关于macros - 我可以制作一个扩展为多个值的宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194884/

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