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.

-- 
-- 
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