[E-Lang] get, set, and dot

Marc Stiegler marcs@skyhunter.com
Tue, 27 Feb 2001 15:21:17 -0700

----- Original Message -----
From: <zooko@mad-scientist.com>
To: E Language Discussions <e-lang@eros.cis.upenn.edu>
Sent: Tuesday, February 27, 2001 8:58 AM
Subject: Re: [E-Lang] get, set, and dot

> (By the way, I am contributing to this discussion, not as a language
> designer, but as a language learner.  Since your stated goal is to make
> the language attractive and easy for programmers to pick up, my current
> level of expertise, "E novice", is a useful one for this discussion.)

And as such you are closer to being the target audience than anyone else
here :-)

A point you made earlier about supporting multiple mental models is one I
feel needs heavy emphasis. When markm first showed me E, before developing
the "new" convention, my reaction was, "oh, no, another one of those
blasted, whacked-out lambda things." It is only because of the adoption of
the current "new" convention, which allowed me to pretend I was using a
"normal" language, that I was willing to fool with E at all (even markm
doesn't fully understand how close I came to blowing off the language). I
spent six months programming away in E without understanding the true
lambda/scoping nature of E, simply being very careful to copy the Maker
pattern off my constructor cheat-sheet (the birthplace of the E Quick
Reference Card) when I needed a new kind of object.

Had I not been able to view E with a mental model that was more
Java-class-like than E really is underneath, there would be no Echat, no
Edesk, no E in a Walnut...and no discussion of this that includes me :-) So
this is another reason I view the discarding of this structure with feelings
that border on outright terror.

Having said that, if we can find a way of eliminating shortcuts that doesn't
set off my "blasted, it's a lambda language" alarm bells, it would be cool.
Using the parens on a constructor function snuck past those alarms, but has
the other issue I pointed out earlier.

I have sort of lost track of what the alternatives for object-constructor
patterns are at this point. Zooko, how would you make something that has the
Python qualities you described that sound so attractive? What would
constructors and functions look like?