我想要一个叫做def-foo的宏。 Def-foo将创建一个函数,然后将这个函数添加到一个集合中。我可以制作一个clojure宏,它可以让我获得宏创建的所有函数的列表吗?
所以我可以打电话给
(def-foo bar ...)
(def-foo baz ...)
然后会有一些设置,例如我可以打电话给他:
all-foos
=> #{bar, baz}
基本上,我只是想避免重复自己。我当然可以用正常的方式定义函数,(定义栏...),然后手动编写该集合。
一个更好的选择,而不是宏观的想法比较简单,是做:
(def foos #{(defn bar ...) (defn baz ...)})
但我还是好奇,是否有宏观思想工作的好办法。