oo, what do we have here? => (defmacro get-lexical-asvar [q] (let [ oem (zipmap (keys &env) (vals &env)) zz (.var (.init (second (find oem q)))) ] `~zz ) ) #'runtime.q/get-lexical-asvar => (let [x assoc y x] (str (get-lexical-asvar x)) ) "#'clojure.core/assoc"
but it doesn't (yeT) work for y On Sun, Mar 3, 2013 at 1:27 PM, AtKaaZ <atk...@gmail.com> wrote: > ok you're right, it's impossible to get the var since those x and y are > already resolved to the function, and multiple vars could point to the same > function anyway. > > => (let [x assoc > y x] > (get-lexical-env) > ) > {x #<core$assoc clojure.core$assoc@35fcd90c>, y #<core$assoc > clojure.core$assoc@35fcd90c>} > > for consistency, ignore the following: > ;the following is inspired from > http://blog.jayfields.com/2011/02/clojure-and.html > (defmacro get-lexical-env [] > " > => (let [a 1 b (+ 1 2)] > (let [c (do \"a\" \"b\")] > (q/get-lexical-env) > ) > ) > {a 1, b 3, c \"b\"} > " > (let [envkeys (keys &env)] > `(zipmap (quote ~envkeys) (list ~@envkeys)) > ) > ) > > (defmacro show-lexical-env [] > `(clojure.pprint/pprint (get-lexical-env)) > ) > > > On Sun, Mar 3, 2013 at 1:05 PM, AtKaaZ <atk...@gmail.com> wrote: > >> that's true but I thought you meant in general >> basically, I'm looking for a way to get the var... ie. >> => (let [x assoc >> y x] >> *(var y)* >> ) >> CompilerException java.lang.RuntimeException: Unable to resolve var: y in >> this context, compiling:(NO_SOURCE_PATH:3:3) >> >> => (let [x assoc >> y x] >> y >> ) >> #<core$assoc clojure.core$assoc@35fcd90c> >> => (var assoc) >> #'clojure.core/assoc >> >> >> something that can replace that (var y) with something that actually gets >> the var that y resolves to. >> >> >> >> On Sun, Mar 3, 2013 at 12:58 PM, Dave Sann <daves...@gmail.com> wrote: >> >>> I think, that will only work if you do it directly. >>> >>> It will not work in the example I gave. >>> >>> Dave >>> >>> >>> On Sunday, 3 March 2013 22:43:14 UTC+11, AtKaaZ wrote: >>>> >>>> >>>> >>>> >>>> On Sun, Mar 3, 2013 at 12:21 PM, Dave Sann <dave...@gmail.com> wrote: >>>> >>>>> This may be a question for clojure dev >>>>> >>>>> I find myself wanting to be able to print data-structures containing >>>>> resolvable functions >>>>> >>>>> e.g. >>>>> >>>>> (let [x assoc] (str [x :a :b])) >>>>> >>>>> would be: >>>>> >>>>> "[#fn clojure.core/assoc :a :b]" >>>>> >>>>> or similar, rather than the current: >>>>> >>>>> "[#<core$assoc clojure.core$assoc@6d289e48> :a :b]" >>>>> >>>>> which is unreadable. >>>>> >>>>> I can read this tag very easily, using the data-reader >>>>> >>>>> {fn resolve} or, >>>>> >>>>> (set! *data-readers* {'fn resolve}) >>>>> >>>>> >>>>> >>>>> But I don't know of any way to get the name and namespace of a >>>>> function to write it out. >>>>> >>>> Did you mean this? >>>> => (meta #'assoc) >>>> {:ns #<Namespace clojure.core>, :name assoc, :arglists ([map key val] >>>> [map key val & kvs]), :column 1, :added "1.0", :static true, :doc >>>> "assoc[iate]. When applied to a map, returns a new map of the\n same >>>> (hashed/sorted) type, that contains the mapping of key(s) to\n val(s). >>>> When applied to a vector, returns a new vector that\n contains val at >>>> index. Note - index must be <= (count vector).", :line 177, :file >>>> "clojure/core.clj"} >>>> >>>> >>>>> I think this is not possible at the moment. >>>>> >>>>> >>>>> Anyone? >>>>> >>>>> Thanks >>>>> >>>>> Dave >>>>> >>>>> -- >>>>> -- >>>>> 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<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> >>>>> . >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Please correct me if I'm wrong or incomplete, >>>> even if you think I'll subconsciously hate it. >>>> >>>> -- >>> -- >>> 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. >>> >>> >>> >> >> >> >> -- >> Please correct me if I'm wrong or incomplete, >> even if you think I'll subconsciously hate it. >> >> > > > -- > Please correct me if I'm wrong or incomplete, > even if you think I'll subconsciously hate it. > > -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- 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.