Em 19-12-2011 23:35, Eric Hodel escreveu:
> On Dec 19, 2011, at 3:04 PM, Rodrigo Rosenfeld Rosas wrote:
>> Em 19-12-2011 19:38, Eric Hodel escreveu:
>>> On Dec 15, 2011, at 7:39 PM, Rodrigo Rosenfeld Rosas wrote:
>>>> Yeah, I already knew about all this. What I'm asking is why Ruby won't allow me to return from another method, ie, passing procs between different methods that will allow me to return from any method through that proc...
>>>>
>>>> I would like to know the reasoning behind this design decision... Is it just difficult technically to implement such behavior, or is it undesired? For the latter case, I would like to know why it is undesired...
>>> Continuations allow you to arbitrarily unwind the stack, but you probably want to avoid using them because they're tricky to use correctly:
>> Using global variables ($cont) in multi-threaded web servers is impractical, so it wouldn't work for what I'm looking for.
> The global variable was simply an example, you can store continuations in any type of variable, constant, etc.

Yeah, Eric, sorry, I was tired yesterday night when I read your message. 
I could even use thread variables if I wanted to, although for my case 
an instance variable would probably be enough.

But anyway, could you give me a concrete example on how I could 
implement something like render_and_return using continuations in my 
controllers?

>> In the other hand, catch-throw could work, but I would depend on the propose being accepted by the web framework being used, or maintaining some monkey patch myself, which I don't think would worth the extra "return"s saved.
>>
>> But don't get me wrong, I'm not insisting that Ruby should add support for such a feature. Actually, I've never asked for it, I was just wondering what are the reasons why this isn't supported by Ruby, but it was already pointed out to me that it could make code debugging very hard, which I agree?
> Continuations support what you want and much more, but due to the difficulty of debugging and understanding code using such constructs ruby does not support such a thing as a direct language feature.
>
> You should be fortunate that you can implement the feature you want using continuations or catch/throw.  There are many other languages where implementation of such a feature would be vastly more difficult.

Yes, I am. Can't complain about Ruby itself.

>> I hope web frameworks will provide such feature by using some catch-throw implementation some day.
> You will need to send feature requests.

I've sent it yesterday to Rails, just after sending my message:

https://groups.google.com/group/rubyonrails-core/browse_thread/thread/116ec2e46a04671c

But as I was already expecting I had already some negative responses and 
no positive one yet...

It seems like Sinatra already supported this, but my web framework of 
choice is currently Rails :P