Right, so if syntax quote fully qualifies unqualified symbols with the current namespace, what good is user/>! to core.async? It has no clue that you want that to be a put and not something else. So yes, either async/>! or a fully qualified symbol is what you want here.
Timothy Baldridge On Mon, Aug 5, 2013 at 7:40 AM, Alice <[email protected]> wrote: > I'm not sure I understand your point. Syntax-quote fully qualifies > unqualified symbols with the current namespace, so it shouldn't be a > problem as long as I don't redefine the >! in the file that defines the > macro. On the other hand, ~'>! would be dangerous because you don't know > what it will be evaluated to in the user's namespace. > > > On Monday, August 5, 2013 9:39:16 PM UTC+9, tbc++ wrote: > >> Your macro is incorrect. Notice what happens to un-namespaced symbols >> inside a syntax quote: >> >> (ns 'user) >> (macroexpand `(foo)) >> >> =>(user/foo) >> >> So your use of >! is getting translated into mynamespace/>!. Core.async >> sees your macro and expands it, it just doesn't condsider mynamespace/>! to >> be a put! call. Instead it sees it as any other function. >> >> To get this to work the way you want, you need to do one of the following >> >> `(~'>! c 42) >> >> or >> >> `(clojure.core.async/>! c 42) >> >> Or, if you've done the following >> >> (ns user >> (require [clojure.core.async :as async)) >> >> Then you can do this: >> >> `(async/>! c 42) >> >> Timothy Baldridge >> >> >> On Mon, Aug 5, 2013 at 5:52 AM, Tassilo Horn <[email protected]> wrote: >> >>> Alice <[email protected]> writes: >>> >>> > I didn't know that macros can do that! >>> >>> Then you might want to have a look at `macroexpand-1` and `macroexpand` >>> from clojure.core and `mexpand-1`, `mexpand`, and `mexpand-all` from >>> clojure.tools.macro. >>> >>> Bye, >>> Tassilo >>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to [email protected] >>> >>> 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<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<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> >> -- >> “One of the main causes of the fall of the Roman Empire was that–lacking >> zero–they had no way to indicate successful termination of their C >> programs.” >> (Robert Firth) >> > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to [email protected] > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > [email protected] > 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 [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth) -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
