On Wed, May 30, 2001 at 08:11:24AM +0900, Stefan Matthias Aust wrote:
> Juha Pohjalainen <voidjump / nic.fi> wrote:
> 
> Perhaps I don't understand what you want to achieve, but to express it
> would be own words aehm code you want to say

Sorry about my bad english, but don't worry I'm bad explainer
in finnish too. :-)

Nope, I dont want to own words, just use them. But what I wanted
with the idea of "try-return-or-what-so-ever-name-shall-be" is
simple command to yield power of finishing things at sublevel
instead of every "return" level making if-then-returns.

Consider following pseudo-mailonly-code:

| def mainLevelFunction
|   value = 42
|   list = [4,2,42]
|   # more preparation code here
|   result = firstSublevelFunction value
|   other = firstSublevelFunction list
|   # then do something with that result here
| end
| 
| :
| :
|   
| def firstSublevelFunction value
|   tryreturn secondSublevelFunction1 value { |variable| isGood variable }
|   tryreturn secondSublevelFunction2 value
|   tryreturn secondSublevelFunction3 value, nil
|   tryreturn secondSublevelFunction4 value, value
|   raise "Can not do it"
| end
| 
| :
| :
| 
| def secondSublevelFunction2 value
|   tryreturn thirdSublevelFunction2 value
|   tryreturn thirdSublevelFunction4 value.to_a
|   tryreturn thirdSublevelFunction6 value
|   return nil
| end
| 
| :
| :
| 
| def thirdSublevelFunction4 value
|   if value.empty?
|     return nil
|   end
|   # do you magic here
|   return result
| end

If, for some reason, all other functions in the middle of chain
fail, but our trustworthy thirdSublevelFunction4, and that function
sees that "hmm, this is not empty value, so lets solve it" and
solves it, then those functions, which really are not intrested
in result (they are only intrested that result is finally found)
just pass this "true result" up to chain until there is someone
who is intrested in that value. So, point of decision is at
thirdSublevelFunction4 and point of usage is at mainLevelFunction,
and everything between is just a great grey cloud.

> 
>   if t = (expression) then return t end
> or
>   return t if t = (expression)
> 
> compared to 
> 
>   tryreturn expression

If-then-return has more points for errors and does not clearly
state your intention. Hmm, if that tryreturn replaces if-then...
part, maybe that code should read:

  ifreturn expression

Does that state better what I wanted to achieve?

> is this really worth a new statement?

It was just an idea, and it seems to me that nobody likes it
so then maybe it is not worth it.

> bye
> -- 
> Stefan Matthias Aust \/ Truth Until Paradox

"Bye, and have a great day", says Jippo (finally!).

-- 
 __________________________________________________________________
[   pub 1024/951AFAF5 1995/12/12   Juha Pohjalainen <jmp / iki.fi>   ]
[   fingerprint 41 56 7F F9 8E EC 16 35  BB 42 EF A7 DF 19 FA 31   ]
[__ http://www.iki.fi/jmp/ ________________ GSM +358 40 570 1179 __]