real metalevel (was: blue ideas)

Jecel Assumpcao Jr jecel at merlintec.com
Mon Aug 26 22:03:18 UTC 2002


On Monday 26 August 2002 09:53, Marcel Weiher wrote:
> On Tuesday, August 20, 2002, at 10:06  Uhr, Alan Kay wrote:
> >  and some action somewhere between instantiation and cloning that
> > would work better
>
> I am still swimming a bit on that one.  There is plain "invocation",
> supplying the required arguments and getting a result.  But what is
> the result?  Either (a) "p-object + params" or (b) "result of some
> message sent to p-object + params".
>
> Answer (a) is closer to normal instance creation, (b) is closer to
> method invocation.

In (a) you might have either p-object modified by the parameters or a 
clone of p-object modified by the parameters. The latter is, as you 
say, like instanciation while the former is like assignment (another 
direction I was interested in exploring).

> Then there is currying, which is "p-object + some params", clearly a
> variant of (a).  Interestingly enough, this would be considered a
> refinement step similar to subclassing, but it could also be
> considered partial instantiation.

Beta uses these similarities to lump everything into a single "pattern" 
construct.

> Existing method invocation is a special case of (b):  the method is a
> parametrized object, the method-context holds the parameters, it is
> then sent the "value" message.  This definition is, of course,
> recursive, but that doesn't bother us, we just cut the recursion off
> at the primitive level.

Unless we don't care about reentrant methods, we had better copy them 
before sending "value". So, once again, this is like instanciation.

> > We need a complete (or darn close) and real metasystem.
>
> How do we know when we have a complete metasystem?  There are too
> many different directions in wich we can abstract.  Anyway, the only
> credible candidate I've seen so far is the research done in software
> architecture.  They start off with "components" and "connectors", and
> then refine from there.

A complete metasystem would allow us to implement Squeak in Squeak. We 
don't have that now - we can implement *another* Squeak in Squeak, 
which isn't the same thing!

-- Jecel



More information about the Squeak-dev mailing list