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.


Reply via email to