[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