[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

Re: Inconsistency in rescuability of "return"

From: Charles Oliver Nutter <charles.nutter@...>
Date: 2008-01-03 06:35:20 UTC
List: ruby-core #14712
Gary Wright wrote:
> 
> On Jan 2, 2008, at 7:15 PM, Jano Svitok wrote:
> 
>> On Jan 3, 2008 12:53 AM, Gary Wright <gwtmp01@mac.com> wrote:
>>>
>>> On Jan 2, 2008, at 6:31 PM, Charles Oliver Nutter wrote:
>>>> But when eval'ing a break outside a while, it does propagate an
>>>> error. So the code under eval is changing its behavior depending on
>>>> what structures surround it. That seems wrong to me, and it means
>>>> that any implementations wanting to emulate it will have to
>>>> maintain state across calls, so eval knows it's being called within
>>>> a loop.
>>>
>>> I don't see how this is any different than the other examples.  When
>>> "eval 'break'" is inside the while loop, 'break' doesn't cause an
>>> error, it simply breaks out of the loop.  If you put "eval 'break'"
>>> at the top level you've got your local jump error again, right?
>>
>> The issue is that eval result depends on one more variable - whether
>> the call is inside a loop or not.
>> So it's a function of it's parameters, data, AND previous calls (or
>> how you would call it).
> 
> Yes, but the behavior of 'break' itself is dependent on the context.  So 
> it is the semantics of 'break' that seems to be in question in this 
> example, not the semantics of 'eval' and the semantics of break in this 
> example are 'normal' as far as I can tell:
> 
> A) break (via eval or not) outside of a loop context causes an exception
> B) break (via eval or not) inside a loop context causes the loop to be 
> terminated
> 
> If this is problematic, what behavior would you expect for A and B?

The problem with this logic is that in case A, the exception also causes 
the loop to be terminated as normal:

while true
   eval 'break'
end

So there's obviously some duality behind break.

1. A bare break can't be cause as an exception, and terminates an 
enclosing loop
2. A break inside an eval can be caught as an exception, and also 
terminates an enclosing loop like a normal break.

- Charlie

In This Thread