user=> (eval `(and [email protected](list true false)))
false
user=> (eval `(and [email protected] (list true true 1)))
1
estoy sintaxis citando y aplicando después un gran martillo para quitar los corchetes de la colección y como yo cité, tiene usar eval Esto es útil si está creando una macro y la función transferida es 'y'.
so (list 1 2 3)
mazo martillado se convierte en 1 2 3
.
Esto es de una manera, extremadamente terrible, pero funciona, así que lo conseguí, lo cual es bueno. Así que mi clojure no es genial, pero espero que este macro ejemplo aclare las cosas.
(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)))
uso (Nunca):
(split-my-args-then-apply-fn
and
{:something :true :something-else false}
:something :something-else)
posible duplicado de [ "reducir" o "aplicar" usando funciones lógicas en Clojure] (http://stackoverflow.com/questions/2891707/ reduce-o-aplica-usa-funciones-lógicas-en-clojura) – amalloy