Tôi muốn có một macro mà tôi sẽ gọi def-foo. Def-foo sẽ tạo ra một hàm, và sau đó sẽ thêm hàm này vào một tập hợp.Tôi có thể tạo một macro clojure để cho phép tôi có được danh sách tất cả các hàm được tạo bởi macro không?
Vì vậy, tôi có thể gọi
(def-foo bar ...)
(def-foo baz ...)
Và sau đó sẽ có một số bộ, ví dụ tất cả-foos, mà tôi có thể gọi:
all-foos
=> #{bar, baz}
Về cơ bản, tôi chỉ cố gắng tránh lặp lại bản thân mình. Tất nhiên tôi có thể xác định các chức năng theo cách thông thường, (defn bar ...) và sau đó viết các thiết lập bằng tay.
Một lựa chọn tốt hơn, và đơn giản hơn so với ý tưởng vĩ mô, sẽ làm:
(def foos #{(defn bar ...) (defn baz ...)})
Nhưng tôi vẫn tò mò về việc liệu có một cách tốt cho các ý tưởng vĩ mô để làm việc.