在宏扩展体方案中将列表列表转换为列表集?
是否有一种通用的方法来获取项目列表并将其展平到深度零,以便它们可以拼接成宏扩展?例如:
((+ 1 2) (+ 3 4) (+ 4 5)) -> (+ 1 2) (+ 3 4) (+ 4 5)
Is there a general way to take a list of items and flatten it to depth zero so that they can be spliced into a macro expansion? For instance:
((+ 1 2) (+ 3 4) (+ 4 5)) -> (+ 1 2) (+ 3 4) (+ 4 5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
注意:这是基于 Eli Barzilay 的评论,但最终从未变成答案。这就是为什么它是社区 wiki。
如果您想要一系列表达式来扩展宏,那么您需要将它们包装在
begin
中。至于展平,您可以在要拼接的内容后面使用...
来实现。当然,这是假设您使用的是syntax-rules
或syntax-case
。Note: This is based on Eli Barzilay's comment that never ended up getting turned into an answer. That's why it's community wiki.
If you want a sequence of expressions for the expansion of a macro, then you need to wrap them in a
begin
. As for the flattening, you can do that with a...
after the thing that you want to splice up. This is assuming that you're usingsyntax-rules
orsyntax-case
, of course.