Hey Lee.

I'm learning conditional restarts myself…. thus the reason why I implemented 
the library so I'm probably not the best person to ask

As far as I know… restarts have to be supported by the language itself in order 
for it to truly blossom the way you are describing it. ribol is just a library, 
not a platform and definitely not a development environment.

I'm not sure what the state is with https://github.com/pallet/ritz but I think 
that it may be what you are looking for in a development environment.

Chris.



On 27/09/2013, at 11:06 AM, Lee Spector <lspec...@hampshire.edu> wrote:

> 
> I apologize for the naivety of this question, but whenever I see 
> libraries/discussions of enhanced mechanisms for 
> exceptions/conditions/errors/restarts/etc in Clojure I wonder if they could 
> provide a couple of features that I dearly miss from Common Lisp, and this 
> contribution makes me wonder the same thing. I looked briefly through the 
> guide (nice diagrams!) but couldn't quite tell if it could do what I miss 
> from Common Lisp in Clojure, and therefore whether I should take the time to 
> study it in more detail.
> 
> What do I miss from Common Lisp condition handling?
> 
> When you hit an error in Common Lisp you get a REPL (sometimes called a 
> "break loop") that lives in the context where the error occurred. The most 
> useful thing to me is that you can examine the state of the system there 
> (through normal REPL interactions) and look at the values of local variables 
> all up and down the stack. In addition, you can change the values of 
> variables and restart the computation, and the restart mechanisms can be 
> customized based on the type of error/condition... which is very cool and 
> occasionally useful, but for me personally the big win is in just being able 
> to really examine the state at the point of the error (including running 
> little pieces of code to help to examine the state, etc.).
> 
> Note that this happens in Common Lisp wherever an error occurs, and the 
> programmer doesn't have to mark or wrap expressions in any special way to get 
> this functionality. Which is crucial, because many of the situations in which 
> this is useful are ones when you hit an error that you had no idea existed, 
> and you certainly didn't know in advance where errors would occur.
> 
> Another Common Lisp feature that's very handy in this context is the ability 
> to trigger an interrupt manually from the keyboard and end up in the same 
> kind of break loop. Your program seems to be hung and you have no idea what 
> it's doing? Interrupt it and look at the stack and the local variables. 
> Everything looks okay but it's just taking a long time? Restart and you're 
> back in action, continuing from where the interrupt occurred. If it doesn't 
> look okay then examine the state to try to figure out what went wrong, abort 
> the computation, fix the problem and re-run from the beginning.
> 
> My sense has been that this kind of functionality doesn't exist in any 
> Clojure environment, maybe due to something about how the JVM works (about 
> which I don't know very much, which may be very clear to all of you :-). But 
> when I see fancy new conditional restart mechanisms etc. then I get a glimmer 
> of hope that maybe I'm wrong about this.
> 
> So, can any existing libraries/systems in the Clojure ecosystem provide this 
> functionality? Is it conceivable that any would in the future?
> 
> Thanks,
> 
> -Lee
> 
> 
> 
> 
> On Sep 25, 2013, at 3:14 AM, zcaudate wrote:
> 
>> I've done a pretty comprehensive guide on conditional restart systems in 
>> clojure with diagrams to show why it is much more flexible over try/catch 
>> mechanism
>> 
>> Project:
>>    https://github.com/zcaudate/ribol
>> 
>> Generated Documentation:
>>    http://z.caudate.me/ribol/
>> 
> 
> -- 
> -- 
> 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/elRWA13Iidg/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.

Reply via email to