That works for functions with one argument list, but what about
functions with multiple argument lists?

;; doesn't work
(def-with-redis foo
  ([] …)
  ([arg] …))

Doc strings and metadata won't work either. It seems like I might as
well copy-paste the code from (source defn). Is there another way
without losing the flexibility of the original defn?

On Oct 22, 5:24 pm, Richard Newman <holyg...@gmail.com> wrote:
> > It feels wrong to repeat myself every time I need to use the database.
> > Is there a way to abstract out the (redis/with-server) part?
>
> Something like
>
> (defmacro def-with-redis [name args & body]
>    `(defn ~name ~args
>       (redis/with-server *db*
>         ~...@body)))
>
> then
>
> (def-with-redis one []
>    ...)
>
> ... untested.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to