Hi again,
On 9 Mrz., 09:23, Meikel Brandmeyer <[email protected]> wrote:
> (defmacro query
> [rec [lhs op rhs]]
> (case op
> 'and `(-> ~rec (query ~lhs) .and (query ~rhs))
> 'eq `(-> ~rec (.field ~(name lhs)) (.eq ~rhs))))
Here a short note, why a macro can be actually annoying:
If you write macro which expands into a query the above will break,
because the symbols are suddenly qualified. Or you have to use ~'and
and ~'eq all over the place. Otherwise the case won't work anymore.
You'd have to write the macro more robust like this:
(defmacro query
[rec [lhs op rhs]]
(case (name op)
"and" ....
"eq" ....))
With functions you don't have to think about these effects.
Sincerely
Meikel
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en