Your macro:

         *(*~greeter user-name#*)*

*
*

Is producing a list of a function or closure followed by a symbol. The
first element of the list your macro builds must instead be an expression
that can be evaluated to a function. (For example a symbol naming a
function or an (fn [] ...) expression.)

Ben


On Sunday, December 16, 2012, jarppe wrote:

> Hi,
>
> I have this macro (complete file https://www.refheap.com/paste/7633):
>
> *(*defmacro defgreeter [greeter-name]
>
>   *(*let [greeter *(*make-greeter*)*]
>
>     `*(*do
>
>        *(*defn ~greeter-name [user-name#]
>
>          *(*~greeter user-name#*)**)**)**)**)*
>
>
> It works as expected when make-greeter is defined like this:
>
> *(*defn make-greeter []
>
>   *(*fn [user-name]
>
>     *(*str "Hello, " user-name*)**)**)*
>
>
> I can use it like this:
>
> *(*defgreeter hello*)*
>
> *(*hello "jarppe"*)*
>
> How ever, if I change make-greeter to this I get IllegalArgumentException:
>
> *(*defn make-greeter []
>
>   *(*let [message "hello"]
>
>     *(*fn [user-name]
>
>       *(*str message ", " user-name*)**)**)**)*
>
>
> Interestingly, this does not work either:
>
> *(*defn make-greeter []
>
>   *(*constantly "what erver"*)**)*
>
> What am I missing?
>
> --
> -jarppe
>
>  --
> 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<javascript:_e({}, 'cvml', 
> '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 <javascript:_e({}, 'cvml',
> 'clojure%2bunsubscr...@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 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