Clojure 中有没有办法编写一个返回两个或多个 s 表达式的宏(或使用现有的宏)?
例子。假设我正在尝试生成前 10 个正方形:
(map * (range 10) (range 10))
现在我想尝试使用重复,以便以后可以提供功率(现在为 2)作为参数:
(map * (repeat 2 (range 10)))
但是,上述内容不起作用,因为repeat返回具有两个范围而不是两个范围的单个 s 表达式。
请不要提供“返回前 10 个方块”功能的替代实现。我对处理此类情况的惯用方法或普遍适用的解决方法感兴趣。
我想我正在寻找一种在下面实现爆炸的方法:
(explode '( a b c )) ;; evals to a b c
(map * (explode (repeat 2 (range 10)))