【发布时间】:2013-04-03 19:56:23
【问题描述】:
在 Clojure 中有没有办法编写一个宏(或使用现有的)返回两个或多个 s 表达式?
示例。假设我正在尝试生成前 10 个正方形:
(map * (range 10) (range 10))
现在我想尝试使用 repeat 以便以后可以提供功率(目前为 2)作为参数:
(map * (repeat 2 (range 10)))
但上述内容不起作用,因为 repeat 返回具有两个范围而不是两个范围的单个 s 表达式。
请不要提供“返回前 10 个方块”功能的替代实现。我对处理此类情况的惯用方法或普遍适用的解决方法感兴趣。
我想我正在寻找一种在下面实现 explode 的方法:
(explode '( a b c )) ;; evals to a b c
(map * (explode (repeat 2 (range 10)))
【问题讨论】:
-
您的问题措辞有些混乱。如果您能提供一个您希望看到的语法示例,将会很有帮助;目前,您使用的
map和repeat在 Clojure 中已经有了特定的定义。 -
@JohnJ 看到我帖子的更新尾
标签: clojure