[e-lang] inconsistencies with __return ejector
Mark Miller
erights at gmail.com
Sun Mar 23 16:26:15 EDT 2008
On Sun, Mar 23, 2008 at 1:05 PM, Toby Murray
<toby.murray at comlab.ox.ac.uk> wrote:
> I can't see why programmers would ever expect not to be able to use
> return, especially if they come from an imperative (e.g. OO)
> programming background, as so many of us do.
In the code:
def foo(flag) {
def x := if (flag) { return 3 } else { 4 }
return x * 2
}
what should foo(true) return? How about foo(false)? If you easily
answered 3 and 8, then you were not surprised that
* the "return" inside the then-block returns from foo and not from the
then-block
* the 4 leaked from the else-block despite the lack of any further annotation.
> Given that you can't make everyone happy, then it might be best to
> go with a less subjective measure, rather than "expectations".
> "Consistency" is perhaps a good objective test to apply here. People may
> be unhappy but if the behaviour is consistent, then it's easier to
> justify.
Yes, that's how we arrived at the current behaviors: treat when-blocks
like then-blocks and else-blocks.
--
Text by me above is hereby placed in the public domain
Cheers,
--MarkM
More information about the e-lang
mailing list