How can I mix optional keyword arguments with the & rest stuff?

Posted by Rayne on Stack Overflow See other posts from Stack Overflow or by Rayne
Published on 2010-05-02T15:28:38Z Indexed on 2010/05/02 15:37 UTC
Read the original article Hit count: 219

Filed under:
|
|

I have a macro that takes a body:

(defmacro blah [& body] (dostuffwithbody))

But I'd like to add an optional keyword argument to it as well, so when called it could look like either of these:

(blah :specialthingy 0 body morebody lotsofbody)
(blah body morebody lotsofboy)

How can I do that? Note that I'm using Clojure 1.2, so I'm also using the new optional keyword argument destructuring stuff. I naively tried to do this:

(defmacro blah [& {specialthingy :specialthingy} & body])

But obviously that didn't work out well. How can I accomplish this or something similar?

© Stack Overflow or respective owner

Related posts about clojure

Related posts about macros