Now I do, and the macro worked! I believe I have a problem using the macro from a function, but leaving that for tomorrow.
Thanks BG! -A On Tue, Dec 18, 2012 at 12:19 AM, Baishampayan Ghose <b.gh...@gmail.com>wrote: > Do you have target ns "clevolution.version.version0-1-1" required? > > -BG > > On Tue, Dec 18, 2012 at 1:38 PM, Alan Shaw <noden...@gmail.com> wrote: > > BG, > > The macro doesn't seem to do the trick. The function X is interned in the > > target namespace, but: > > > > user=> (def image (eval-in "(X 400 400)" > > "clevolution.version.version0-1-1")) > > CompilerException java.lang.RuntimeException: Unable to resolve symbol: > X in > > this context, compiling:(NO_SOURCE_PATH:1) > > > > > > On Mon, Dec 17, 2012 at 11:53 PM, Alan Shaw <noden...@gmail.com> wrote: > >> > >> Oh yes, the something.something is fixed so I can just prepend it, > thanks. > >> (Hadn't noticed your macro takes the ns as a string!) > >> > >> -A > >> > >> > >> > >> On Mon, Dec 17, 2012 at 11:47 PM, Baishampayan Ghose <b.gh...@gmail.com > > > >> wrote: > >>> > >>> Alan, > >>> > >>> What you're asking for is to derive the ns "clojure.core" given only > >>> "core". Not sure if that's possible. > >>> > >>> The namespace constitutes the whole dotted structure and not just the > >>> last component, I am afraid. > >>> > >>> If the actual ns is something.something.version-0-1-1, then you need > >>> the string "something.something.version-0-1-1" and not just > >>> "version-0-1-1" [unless of course you have some other way of deriving > >>> it from info that's embedded in _your_ code or structure thereof]. > >>> > >>> > >>> -BG > >>> > >>> On Tue, Dec 18, 2012 at 1:10 PM, Alan Shaw <noden...@gmail.com> wrote: > >>> > Thanks BG, I'm trying that. > >>> > But I don't think it addresses how to get from the string > >>> > "version-0-1-1" to > >>> > the namespace something.something.version-0-1-1. How can I do that? > >>> > > >>> > -A > >>> > > >>> > > >>> > > >>> > On Mon, Dec 17, 2012 at 11:26 PM, Baishampayan Ghose > >>> > <b.gh...@gmail.com> > >>> > wrote: > >>> >> > >>> >> Alan, > >>> >> > >>> >> Something like this might work for you - > >>> >> > >>> >> (defmacro eval-in > >>> >> "Eval a Clojure form in a different namespace and switch back to > >>> >> current namespace. > >>> >> > >>> >> Args: > >>> >> code - Clojure form as string > >>> >> ns - Target namespace as string" > >>> >> [code ns] > >>> >> `(do > >>> >> (in-ns '~(symbol ns)) > >>> >> (let [ret# (eval '~(read-string code))] > >>> >> (in-ns '~(ns-name *ns*)) > >>> >> ret#))) > >>> >> > >>> >> Warning - I haven't really tested this code. > >>> >> > >>> >> -BG > >>> >> > >>> >> On Tue, Dec 18, 2012 at 12:37 PM, Alan Shaw <noden...@gmail.com> > >>> >> wrote: > >>> >> > Thanks, Las! > >>> >> > > >>> >> > Ok say I have a file in which there is string such as > >>> >> > > >>> >> > "(- (atan (bw-noise 902 2 0.7604615575402431 400 400)) > >>> >> > (read-image-from-file > >>> >> > \"images/Dawn_on_Callipygea.png\"))" > >>> >> > > >>> >> > and another > >>> >> > > >>> >> > "version-0-0-1" > >>> >> > > >>> >> > and I have a namespace version-0-0-1 into which functions named > atan > >>> >> > etc. > >>> >> > are all :referred. I want to evaluate the expression in that > >>> >> > particular > >>> >> > context, and not remain there when I'm done. > >>> >> > > >>> >> > -A > >>> >> > > >>> >> > > >>> >> > > >>> >> > On Mon, Dec 17, 2012 at 11:00 PM, László Török < > ltoro...@gmail.com> > >>> >> > wrote: > >>> >> >> > >>> >> >> ah, sorry, it's a bit early for me > >>> >> >> > >>> >> >> (in-ns (ns-name user-ns)) > >>> >> >> > >>> >> >> if you could post a simple example for the second part of your > >>> >> >> question > >>> >> >> I > >>> >> >> maybe able to help. > >>> >> >> > >>> >> >> Las > >>> >> >> > >>> >> >> Alan Shaw 2012. december 18., kedd napon a következőt írta: > >>> >> >> > >>> >> >>> Ah no, that puts me in a new user-ns namespace! Not what I > wanted! > >>> >> >>> > >>> >> >>> > >>> >> >>> On Mon, Dec 17, 2012 at 10:51 PM, László Török > >>> >> >>> <ltoro...@gmail.com> > >>> >> >>> wrote: > >>> >> >>>> > >>> >> >>>> Try (in-ns 'user-ns) > >>> >> >>>> > >>> >> >>>> Las > >>> >> >>>> > >>> >> >>>> On Dec 18, 2012 7:50 AM, "Alan Shaw" <noden...@gmail.com> > wrote: > >>> >> >>>>> > >>> >> >>>>> user=> *ns* > >>> >> >>>>> #<Namespace user> > >>> >> >>>>> user=> (def user-ns *ns*) > >>> >> >>>>> #'user/user-ns > >>> >> >>>>> user=> user-ns > >>> >> >>>>> #<Namespace user> > >>> >> >>>>> user=> (in-ns user-ns) > >>> >> >>>>> ClassCastException clojure.lang.Namespace cannot be cast to > >>> >> >>>>> clojure.lang.Symbol clojure.lang.RT$1.invoke (RT.java:226) > >>> >> >>>>> > >>> >> >>>>> It appears I'm not understanding how namespaces are > represented. > >>> >> >>>>> > >>> >> >>>>> Also, is it just wrong of me to want to remember a namespace I > >>> >> >>>>> was > >>> >> >>>>> working in and try to go back to it later? > >>> >> >>>>> > >>> >> >>>>> The slightly larger context is: I'm saving an s-expression > with > >>> >> >>>>> unqualified names in it into a file as a string. Also saving a > >>> >> >>>>> string > >>> >> >>>>> indicating the name of the environment in which that string > >>> >> >>>>> should > >>> >> >>>>> be (read > >>> >> >>>>> and) eval'ed so that the names will resolve to the appropriate > >>> >> >>>>> functions. > >>> >> >>>>> Advice on managing this would be appreciated. > >>> >> >>>>> > >>> >> >>>>> -Alan Shaw > >>> >> >>>>> > >>> >> >>>>> -- > >>> >> >>>>> 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 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 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 > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> -- > >>> >> >> László Török > >>> >> >> > >>> >> >> -- > >>> >> >> 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 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 > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> Baishampayan Ghose > >>> >> b.ghose at gmail.com > >>> >> > >>> >> -- > >>> >> 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 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 > >>> > >>> > >>> > >>> -- > >>> Baishampayan Ghose > >>> b.ghose at gmail.com > >>> > >>> -- > >>> 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 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 > > > > -- > Baishampayan Ghose > b.ghose at gmail.com > > -- > 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 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