[E-Lang] E Project, Documentation, and new programmers
Mark S. Miller
markm@caplet.com
Thu, 12 Apr 2001 11:07:30 -0700
At 11:29 AM Thursday 4/12/01, Tyler Close wrote:
>Marc Stiegler wrote:
>
>> > [1] For a case in point, after my first foray into using E, I think that
>> the
>> > default ":none" guard is a major source of surprises that leave newbie
>> > programmers unable to figure out what went wrong, and that it really
>> ought to
>> > be changed to a default ":retAny" guard that returns anything wrapped in
>> a
>> > "RetVal" object. I will soon publish my notes about that experience.
>
>I think the best solution here is actually to deviate from the expression style
>syntax and have an explicit "return" keyword. Then it would be perfectly safe
>to have the default guard be ":any". I am not sure, but I think following this
>path would also make it possible to have E loops terminate with a return rather
>than throwing an exception.
Just to clarify what I think Tyler meant:
E loops don't terminate by throwing, they terminate by escaping, which
happens when an ejector is invoked
http://www.erights.org/elib/concurrency/msg-passing.html#escape .
In Java, this is *implemented* by throwing an Ejection
http://www.erights.org/javadoc/org/erights/e/elib/base/Ejection.html , which
is a Throwable, but neither an Exception nor an Error. It is a third
category to keep the E-semantics of throwing separate from the E-semantics
of escaping.
I don't think any of this changes Tyler's point. But in light of recent
events and feedback, I think we need to ask:
Is a radical change of style really needed here? The current style ain't
broken, and we've got bigger fish to fry (CapTP, Hydro, Persistence,
1.0 & publicity, Auditors, PassByCopy with mobile code).
As Tyler predicted, the pendulum of priorities has indeed swung. It's
called learning by bitter experience. One would have thought I'd had enough
of this kind of experience for this lesson to be permanent, but apparently
not yet. Maybe now.
Cheers,
--MarkM