Proposed Resolutions

Marc Stiegler marcs@skyhunter.com
Fri, 13 Nov 1998 09:44:00 -0700


I really like replacing load: with import:. I'm in the middle of building a
new E tool with lots of java imported classes, and this change will give me
one less places to have to translate languages :-)

Uh, if you load:/import: the same class a second time, does E actually load
it again, or does E realize that the class is already loaded?

--marcs

-----Original Message-----
From: Mark S. Miller <markm@caplet.com>
To: E Language Discussions <e-lang@eros.cis.upenn.edu>
Date: Thursday, November 12, 1998 5:16 PM
Subject: Proposed Resolutions


>Last night Ping & I had an extraordinarily productive f2f meeting to try to
>resolve some outstanding E design issues.  The big one is sameness (aka,
>equality), which in turn is intimately related to defining new pass-by-copy
>objects, how object graphs print so they can be read back in, and handling
>cyclic data structures.  Since this is the big one, I'll explain it all
>after I've explained the other issues.  (Yes, I know this hardly makes me a
>master of suspense.)
>
>The proposals have evolved a bit in my head since Ping & I met.  Since
>Ping's on-line, I'll just present my current thinking -- so credit us both
>but only blame stupidities on me.
>
> Comments on URI Expressions
> http://www.erights.org/doc/elang/uri-exprs.html
>
>* I HAD A TERRIBLE BRAINO: I had read
>http://www.ics.uci.edu/pub/ietf/uri/rfc2396.txt as excluding commas from
>legal URI expressions.  Wrong.  Like parens, commas are perfectly legal.
>Therefore, E's URI Literal Expressions must be terminated with whitespace,
>newline, or end-of-file.  However, just as with unbalanced close parens,
>there's an accident proneness issue:
>
>Even though an rfc-legal URI may terminate with an unbalanced close paren,
>should this case occur, it's more likely the programmer forgot to put in a
>space before an E close paren, so such a case is a syntax exception.
>Similarly, we propose to say that a URI Literal Expression that *ends with*
>a comma is a syntax exception, but internal commas are fine.  As always, if
>you want to express a URI that falls outside these rules, use a URI Unary
>Expression.
>
>* Rename "load:" to "import:", as its purpose corresponds to the familiar
>(especially to Javoids) notion of module/class/package importing.
>
>* "mailto:" is withdrawn until someone contributes a "mailto:" protocol
>handler with a sensible behavior.  Ideally, "mailto:frantz@communities.com"
>would evaluate to Bill himself, but this might be hard to implement.
>
>* URI Literal Expression bodies could have at most one '#'.  If it has one,
>then a two argument lookup is called on the protocol handler -- the first
>being the uri body string before the '#', the second being the string after
>the '#' (the fragment).  URI protocol handlers (like "file:") that don't
>want to accept fragments can simply not implement the two-arg lookup.
>
>
> Comments on Text File I/O
> http://www.erights.org/doc/elang/text-file-io.html
>
>* On java.io.File objects, "asString" is easily confused with "toString"
>though they have completely different meanings.  Change File's "asString"
>to "getText".  This returns a String containing the UTF-8 decoding of the
>file, with platform line-ends normalized to '\n's.  It internally takes
>care of opening a stream, reading, and closing the stream.
>
>* Provide java.io.File objects with corresponding "setText(string)" and
>"appendText(string)" messages.  It would internally take care of opening,
>writing, and closing a stream.
>
>* Perl and Python's readLine(), and Perl and E's file iteration behavior,
>all yield lines with a '\n' on the end.  (Is this correct??)  However,
>Java's readLine() function returns a line of text with newline removed.
>Since part of the point of E is to rapidly prototype ideas which get turned
>into Java, I can't change this behavior without changing the name.  The two
>plausible choices: 1) leave it alone, or 2) withdraw "readLine" from E, and
>provide a "readln" that preserves the newline.
>
>
> Maker Naming Convention
>
>* In the previous competition, the winning naming convention is
>
> define PointMaker new(x, y) {
>     define point {
>         to getX {x}
>         to getY {y}
>     }
> }
>
>Since this is both understandable and pleasant, and plays best with Java.
>Java constructors are seen by E as "new" messages.  The E object whose
>messages correspond to the constructors and static methods in a Java class
>declaration will also be called an E maker, as opposed to a java.lang.Class
>object, which corresponds to that still mysterious creature, an E type.
>
>The made object is also given a descriptive name, as opposed to saying
>"self".  "self" and "super" are, by convention, reserved for
>inheritance-like delegation patterns.
>
>
> Naming Collections, collecting names
>
>* Returning to our standard matrix, here's a new proposal to shoot at
>
>                Map    |   List
>            +----------+-----------
> immutable  | ImmuMap  | ImmuList
>            |          |
> mutable   |  MuMap   |  MuList
>            |          |
>
>Other possible future columns include Slot and Scope.  Other possible
>future rows include read-only.  Biggest disadvantage: try saying "ImmuMap"
>out loud.
>
>What do y'all think?
>
>
>