[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: LFM + LFSP = LFE?
Brian,
Got a link for Slate? I'd like to check it out.
Mike
> Date: Sat, 14 Jun 2003 16:01:39 -0700 (PDT)
> From: Brian T Rice <water@tunes.org>
>
> On Sat, 14 Jun 2003, Avi Bryant wrote:
>
> > On Sat, 14 Jun 2003, Michael Vanier wrote:
> > - use a block to define each method. In the simplest case this would
> > probably look something like:
> >
> > Script addMethod: #run do:
> > [:self |
> > self puts: 'hello world']
> >
> > or
> >
> > Script addMethod: #add:to: do:
> > [:self :x :y |
> > x + y]
>
> In Slate, we allow the user to omit the input block arguments from the
> header and instead use them in the signature, and this is rewritten by the
> parser into a canonical syntax model.
>
> > To properly match the return semantics, you would have to pass a
> > continuation in as well:
> >
> > Script addMethod: #add:to: do:
> > [:self :return :x :y |
> > return value: x + y]
>
> Now this is interesting syntactically, because we had been using ^ as a
> selector on method objects which leads to precedence confusion among
> migrating Smalltalkers. We still use the continuation model of course.
>
> > I guess you could use the {} literal syntax to make this a little
> > friendlier, by defining #methods: to take associations from selectors to
> > blocks:
> >
> > Script methods:
> > {#run ->
> > [:self :return | self puts: 'hello world'].
> >
> > #add:to: ->
> > [:self :return :x :y | return value: x + y]}
> >
> > If you got really clever you could make "self" and "return" be dynamically
> > scoped globals, so now we'd have something like
> >
> > Script methods:
> > {#run -> [Self puts: 'hello world'].
> > #add:to: -> [:x :y | Return value: x + y]}
>
> This is even more interesting, and in Slate I could see an additional
> benefit by combining this with accessing the method's slots for outer
> calling contexts, so that a specific continuation could be chosen. Of
> course, if you assume that dynamic scoping is available, you can also
> introduce other continuations that way.
>
> --
> Brian T. Rice
> LOGOS Research and Development
> http://tunes.org/~water/
>