because it is a macro, I am not sure it can work for y. (my macro skills are limited)
but in the general case where the data is not available at compile time. I am not sure macros will help. On Sunday, 3 March 2013 23:44:56 UTC+11, AtKaaZ wrote: > > 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 <javascript:>>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 <javascript:>>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 <dave...@gmail.com<javascript:> >>> > 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 clo...@googlegroups.com<javascript:> >>>> 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 <javascript:> >>>> 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+u...@googlegroups.com <javascript:>. >>>> 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.