Re: A New Revealation: Semi-Permeable Membranes Ka-Ping Yee (ping@lfw.org)
Mon, 25 Oct 1999 22:57:16 -0700 (PDT)

[+] I like the flexibility that we'd be getting out of guarded return values and guarded slots. (This sounds like the "auditor" concept you described a while ago, MarkM -- or are auditors a different thing?)

On Mon, 25 Oct 1999, Chip Morningstar wrote:
> >
> > define getterSetterPair(value) ^any {
> > define getter() ^any { value }
> > define setter(newValue) ^void { value := newValue }
> > [getter, setter]
> > }
>
> Given that it's always there, what's the "^" for? It doesn't serve any
> syntactic purpose I can see and it's an extra character to type and to
> read.

[#] If we're really talking about guards, then ":" only seems natural.

define square(x : int) : int { x * x }

This will look very familiar to Pascal people. The "^" is somewhat scary... it looks mathematical.

> Aside from my criticism of the syntax (above), I really like this mechanism as
> a hook for the beginnings of a run-time type system. This is one of those
> things, however, whose presentation we should be *very* careful about so as not
> to dump a giant bag of complexity on the neophyte E programmer (as well as not
> dumping a giant bag of complexity on the E system developers!).

[+] Just want to cast a vote of agreement with that. Very well put.

"You should either succeed gloriously or fail miserably. Just getting by is the worst thing you can do."