user=> (eval `(and [email protected](list true false)))
false
user=> (eval `(and [email protected] (list true true 1)))
1
Tôi cú pháp-trích dẫn và sau đó áp dụng một cái búa tạ lớn để loại bỏ các dấu ngoặc xung quanh việc thu thập và kể từ khi tôi trích dẫn nó, có để sử dụng eval. Điều này rất hữu ích nếu bạn đang tạo macro và hàm được truyền vào là 'và'.
vì vậy (list 1 2 3)
tạ được đóng thành 1 2 3
.
Đây là một cách, cực kỳ khủng khiếp, nhưng nó hoạt động, vì vậy tôi nhận được rằng sẽ cho tôi mà là tốt đẹp. Vì vậy, clojure của tôi là không lớn nhưng tôi hy vọng ví dụ vĩ mô này xóa mọi thứ lên.
(defmacro split-my-args-then-apply-fn
"This is one terrible macro designed to show the use of 'and'."
[fun coll & args]
`(~fun [email protected]((apply juxt args) coll)))
sử dụng (Không bao giờ):
(split-my-args-then-apply-fn
and
{:something :true :something-else false}
:something :something-else)
thể trùng lặp của [ "giảm" hoặc "áp dụng" sử dụng các hàm logic trong Clojure] (http://stackoverflow.com/questions/2891707/ giảm hoặc áp dụng-sử dụng-logic-chức năng-in-clojure) – amalloy