Hi James,
I really appreciate your code,it really help me much.
just a little modification:

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

doseq requires an even number of args

在 2014年2月25日星期二UTC+8下午6时33分48秒,James Reeves写道:
>
> 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, 刘家财 <jiaca...@gmail.com <javascript:>> 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 clo...@googlegroups.com<javascript:>
>> 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 <javascript:>
>> 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 <javascript:>.
>> 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