[e-lang] Returning guards from __getAllegedType: opinions needed
Dean Tribble
dtribble at gmail.com
Tue Oct 17 01:14:11 CDT 2006
Thanks!
On 10/16/06, Mark S. Miller <markm at cs.jhu.edu> wrote:
>
> Kevin Reid wrote:
> > A principle which accounts for both of these is that anything between
> > the 'def' and the method bodies --
> >
> > def foo extends bar { to run(arg :guard) :int { return 99 } }
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > is public.
> ["implements baz" removed from the example so that email clients won't
> rewrap.
> Kevin qualifier about the "implements baz" part remains true.]
>
> > If the programmer wishes to hide a powerful guard, or a more specific
> > guard, they can re-coerce inside the body:
> >
> > def f(box :Box) {
> > def thing :Unseal := box
> > }
>
>
> The thing I really like about this rule is that we can explain what's
> hidden
> according to the syntactic placement of curly brackets, which fits well
> with
> the rest of the E language.
>
> This let us sensibly also reserve the right for __getAllegedType to reveal
> other information appearing between the "def" and the method/matcher
> bodies,
> such as the ASTs of the patterns. I can imagine this being useful, e.g.,
> for
> future documentation generator tools. For example, in E one defines a
> variable-arity function as
>
> ? def add {
> > match [`run`, args] {
> > var result := 0
> > for arg in args {
> > result += arg
> > }
> > result
> > }
> > }
> # value: <add>
>
> ? add(3,4,5)
> # value: 12
>
> ? add.__getAllegedType().help()
> # value: interface "__main$add" {
> # }
> #
>
> It would be nice if, in a future version of E, add's alleged type
> explained
> its protocol better. It would therefore be good for us to reserve the
> right
> for future __getAllegedType behavior to be enhanced to provide such
> information. We allow this merely by saying that the programmer may not
> rely
> on future __getAllegedType behavior not revealing information visible
> outside
> the curlies which bracket the object's method/matcher bodies.
>
> --
> Text by me above is hereby placed in the public domain
>
> Cheers,
> --MarkM
> _______________________________________________
> e-lang mailing list
> e-lang at mail.eros-os.org
> http://www.eros-os.org/mailman/listinfo/e-lang
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eros-os.org/pipermail/e-lang/attachments/20061016/9ab5fe3d/attachment.html
More information about the e-lang
mailing list