You could just write it as a function and leave out wcar*.

(defn batchly-redis [cmd params]
  (doseq [params]
    (apply cmd params)))

Then to execute:

(wcar* (batchly-redis cat/set parameters))

As far as I can tell, wcar is just a container macro, like with-open, in
that it initiates the connection and then cleans up after itself. Within
wcar, you can execute functions in whatever way you want.

- James


On 25 February 2014 09:00, 刘家财 <jiacai2...@gmail.com> wrote:

> hi JW,
> First thank you for your reply.
> my origin question is somethine about redis.here i refer
> https://github.com/ptaoussanis/carmine
> I follow this two line
>  (def server1-conn {:pool {<opts>} :spec {<opts>}}) ; See `wcar`
> docstring for opts
>
> (defmacro wcar* [& body] `(car/wcar server1-conn ~@body))
>
> then I can exec some redis commands,but I want to exec commands dynamicly.
> for example I here a vector [["foo" "bar"]["hello" "world"]]
> i want to exec following commands
> (wcar* (car/set "foo" "bar") (car/set "hello" "world"))
> so i have write a macro like this
>
> (defmacro batchly-redis [cmd params]
>   (let [car-fns (map #(cons cmd %) params)]
>     `(wcar* ~@car-fns)))
>
>
> then I can invoke this macro using this way
> (batchly-redis cat/set [["foo" "bar"]["hello" "world"]])
> in this way,my macro works ok.but here my vector is coming from the return
> of other fn ,so as you said above,this will not work, because marco
> evaluates args at compile time.Do your have some ideas on my problem.
> Really thanks
>
>
> 在 2014年2月24日星期一UTC+8下午6时29分09秒,Jozef Wagner写道:
>>
>> Well the evil thing is that apply-macro evaluates arguments at compile
>> time. Example where this won't work follows
>>
>> (defn foo [numbers]
>>   (apply-macro + numbers))
>>
>> JW
>>
>>
>> On Mon, Feb 24, 2014 at 10:27 AM, 刘家财 <jiaca...@gmail.com> wrote:
>>
>>> I have one problem using Clojure
>>> we all know there is a apply for a fn to prepend intervening arguments
>>> to args.
>>> such as (apply + [2 3]) will equals to (+ 2 3)
>>> this is really handy,
>>> BUT,this is no apply-macro fn to use,I find a contrib(
>>> https://github.com/clojure/clojure-contrib/blob/
>>> 73accf597eafb8dfcb642702a3b98b057bbdbbdf/src/main/clojure/
>>> clojure/contrib/apply_macro.clj#L34) which has somethine like this,but
>>> deprecated.
>>> and says it is evil,I can't understand why the docs says it was evil?
>>> Is there anything harmful? Can someone show me some examples?
>>> Thank U
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@googlegroups.com
>>>
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+u...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to