No, I just implemented a simple intuitive scope, which looks like it is about the same as the basic idea there. There are some interesting ideas/questions about how scopes work across threads and how consumers can pass the buck for resource clean up to an enclosing scope (like exception handling).
In my case I explicitly don't handle extending scopes to child threads (for now). If the bindings convey to a child thread and you try to add an object to the current scope, then you'll get an exception for trying to set! a conveyed binding. I'm not sure about the idea for passing resource clean up to an enclosing scope. I'd have to consider the problem and potential solutions before I could form an opinion. That's not to say that these things are bad ideas or that some version of them won't end up in the library. I just wanted a minimal implementation of a scoping concept. It can evolve from there. Paul On Sat, Oct 12, 2013 at 10:11 AM, Jozef Wagner <jozef.wag...@gmail.com>wrote: > Is it based on http://dev.clojure.org/display/design/Resource+Scopes ? > > On Friday, October 11, 2013 3:54:59 PM UTC+2, Paul Stadig wrote: >> >> It separates the resource management from the creation and lexical >> binding of resources. You can create a scope high up in the call stack, and >> within the dynamic extent of that scope you can create resources, return >> them from functions and freely use them; when the scope eventually exits, >> then the resources will be cleaned up. >> >> This library does also generalize a bit to allow you to register an >> object and a clean up function, or even just a thunk to get called when the >> scope exits. >> >> On Friday, October 11, 2013 7:56:52 AM UTC-4, Cedric Greevey wrote: >>> >>> What does this do that (with-open ...) doesn't do? Generalize to other >>> cleanup methods than (.close x)? >>> >>> >>> On Fri, Oct 11, 2013 at 6:36 AM, Paul Stadig <pa...@stadig.name> wrote: >>> >>>> I have released version 0.1.0 of scopes, a little library for resource >>>> scopes. It can be used to establish a resource scope with the >>>> with-resource-scope macro. Within the dynamic extent of that macro one can >>>> register a resource with the scoped! function so that when the macrco block >>>> goes out of scope .close is called on the registered resource. >>>> >>>> An object and function can also be registered with (scoped! x (fn [x] >>>> ...)) so that when the macro block goes out of scope the function will be >>>> called and given x as an argument. >>>> >>>> There is also a shorthand function called scoped-thunk! that will >>>> register a thunk (a function taking no arguments) to be called when the >>>> macro block goes out of scope. >>>> >>>> The scopes library also defines a function named closeable? that will >>>> return true if its argument implements java.lang.AutoCloseable. >>>> >>>> Because scopes uses the java.lang.AutoCloseable interface and the >>>> exception supression mechanism, it is only compatible with Java 7. >>>> >>>> Finally, there is also a scopes-magic artifact, and when it is on the >>>> classpath it will automatically pull in the scopes library and add >>>> with-resource-scope, scoped!, scoped-thunk!, and closeable? to clojure.core >>>> so that they are automatically available everywhere with out having to be >>>> imported. I'm not saying that this is necessarily a good idea, but there it >>>> is. :) >>>> >>>> https://clojars.org/pjstadig/**scopes<https://clojars.org/pjstadig/scopes> >>>> https://clojars.org/pjstadig/**scopes-magic<https://clojars.org/pjstadig/scopes-magic> >>>> >>>> >>>> Paul >>>> >>>> -- >>>> -- >>>> 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> >>>> . >>>> >>> >>> -- > -- > 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 a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/qPUd3AEVxT8/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- 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.