From: Saynatkari Date: 2005-03-27T04:22:06+09:00 Subject: Re: Evaluator for a mini-Ruby in Haskell In data 3/26/2005, "(Phil Tomson)" ha scritto: >In article <3alo9bF6d2vo8U1@individual.net>, >Robert Klemme wrote: >> >> >>I'm surprised about "retry", too. His analysis sounds all very resonable - >>only that "break" does not work for me but "return" does: >> >>>> def my_while(cond) >>>> break unless cond >>>> yield >>>> retry >>>> end >>=> nil >>>> i = 0 >>=> 0 >>>> my_while i < 10 do >>?> puts i >>>> i += 1 >>>> end >>0 >>1 >>2 >>3 >>4 >>5 >>6 >>7 >>8 >>9 >>LocalJumpError: unexpected break >> from (irb):2:in `my_while' >> from (irb):7 > > >Hmmm... break works find for me in 1.8.2. Time to upgrade? > > >> >>Btw, can anybody think of a way to make my_while return the result of the >>last block evaluation? It seems impossible because the return occurs before >>the yield... >> > > >How about: > > def my_while(cond) > return @ret unless cond > @ret = yield > retry > end @ret may not be defined at that point of evaluation. >Phil E