From: Eric Hodel Date: 2011-12-20T06:38:34+09:00 Subject: [ruby-core:41732] Re: Documentation of the language itself (syntax, meanings, etc) 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: $ cat t.rb require 'continuation' def a b puts 'a done' end def b c puts 'b done' end def c d $cont.call if $cont puts 'c done' end def d puts 'd done' end puts 'without continuation:' a puts puts 'back at toplevel' puts puts 'with continuation:' callcc do |cc| $cont = cc a end puts puts 'back at top-level' $ ruby t.rb without continuation: d done c done b done a done back at toplevel with continuation: d done back at toplevel