James,
that works but i would use a record instead of something like that. I want 
to extract the local bindings only with a var to the closure. I thought 
there might be some meta data or properties i can access.

Josh, I didn't think about using java reflection api. thanks!

On Saturday, May 26, 2018 at 9:23:05 AM UTC+3, James Gatannah wrote:
>
>
>
> On Friday, May 25, 2018 at 7:40:12 AM UTC-5, Sonny To wrote:
>>
>> Hi James,
>> I'm trying to access the local bindings of the closure like it is an 
>> object
>> (.-x bar) should give  1. I can use a defrecord for this but I want to 
>> use regular functions and no macro magic
>>
>
> This isn't quite what you're asking for, but one approach to what records 
> actually do would be to return a map of closures that include accessors for 
> the state. (Disclaimer: I'm totally doing this off the top of my head in 
> the google groups web interface, without even checking that the parentheses 
> are balanced) One example would be:
>
> (defn build-incrementer
>
>   [x]
>
>              {:inc (fn [] (inc x))
>               :dec (fn [] (dec x))
>               :status (fn [] x)})
>
> Is that close to what you wanted?
>
> Regards,
> James
>  
>
>>
>> On Friday, May 25, 2018 at 9:01:22 AM UTC+3, James Gatannah wrote:
>>
>>> On Thursday, May 24, 2018 at 1:22:42 PM UTC-5, Sonny To wrote:
>>>>
>>>> (defn foo[]
>>>>  (let [x  1]
>>>>    (fn []  
>>>>      (+ x 1)
>>>>     )
>>>>  )
>>>>
>>>> (def bar  (foo))
>>>>
>>>> Is there a way to get the value of x from closure bar?
>>>>
>>>
>>> I may be describing this incorrectly.
>>>
>>> You're creating a top-level var named bar.
>>>
>>> You're calling the function foo, and associating the value it returns to 
>>> that var bar.
>>>
>>> foo's return value happens to be a function that looks like it should be 
>>> a counter. Except that, in clojure, it isn't.
>>>
>>> This vaguely looks like an approach to lexical closures that I vaguely 
>>> remember from scheme textbooks (and Paul Graham essays).
>>>
>>> What are you really trying to do?
>>>
>>

-- 
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/d/optout.

Reply via email to