Or maybe i could simply push to the global var and in addition to the value use a unique gensymed id. Then once the local binding was done it would pop until it sees its gensymed id. That would work in the situation that a local binding failed to pop its own binding. That might work...
On Sep 17, 5:12 pm, Gorsal <s...@tewebs.com> wrote: > Thanks for the replies! > Before I start doing something silly, I would like to ask another > question. The eventual goal of all of this is to establish bindings > which also affect the same global variable in other namespaces (these > other namespaces will 100% have the same global variable). In other > words, an equivalent of binding which affects all namespaces. Also i > want a binding which will > affect threads that I start (this is easy, i can just pass the one var > as a parameter?). > > Anyone have any suggestions on how they would do this. The solution > has to be fast as this binding will be occuring fairly often and > rapid. > > At first I considered a global variable to which i would push a value > then pop it once the binding was done. However, I eventually rejected > this because there is no way to control access to this one global var > without freezing the whole program (refs won't do..). With threads, > without this ref, everything would get messed up if a thread suddenly > got killed without popping. This would spell disaster for the whole > program so... > > Then I considered having a unique global variable per thread. Then > somehhow i would get the thread id and hash that with the current > value. Anything which needed to use the same variable would looks up > its thread id and then look in the global hash to see the value. Then > i rejected that because I'm guessing first its probably inefficient to > do this and I don't know even how that would work. > > Finally i considered using the binding form and in order to achieve > the binding across namespaces redefine the defn to create two > functions, one which take as the first argument a special structure > which includes the new binding. Then the function would bind it in its > own namespace. This function would be a gensymed name, so i could call > the function regularly in my code and amacro would take care of > expanding it. However, on the other hand, i would most definitely want > these to be used as functions so i was considering redefining apply to > allow this functionality > > Does map and all those functions use apply, though? I doubt it. So > maybe that idea is cracked. > > Notice that this binding is going to be happening very often, so the > solution has to be fast enough. Anyone have any ideas? And yes, i have > to bind global variables across namespaces. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---