Project update

Wed Feb 13 07:15:02 2002

Where can I read more about Slate? What I've found on the tunes-wiki 
links looks interesting, but not very complete.

> I should mention that I'm going to de-emphasize the metaphor with Self 
> and Beta, unfortunately, since the expectation of "object-oriented 
> programming" principles creates a great deal of confusion when faced 
> with a language like Slate that is only based on maps-containing-maps. 

Maps-containing-maps looks exactly like description of the core idea of 
GENS, the language from my master's thesis. Except I called them 
environments. The thesis has shown that environments are powerful enough 
to support programming in functional, logic and imperative (including 
OO) style. Actually I went so far to implement lambda-calculus, and 
subsets of ISWIM (a pure functional language), Prolog, Pascal and Sol 
(an Oberon-style OO language) on top of GENS. It all fit in 39 KB.

If you're interested enough, take a look at the page 97 of the MPOOL 
2001 proceedings on

 > Some ideas I'm proposing include using certain kinds of combinators as
 > evaluation primitives. They would take the surrounding object within
 > the network of slots and transform it according to various basic
 > rules. This would be an extensible language, probably with a
 > pseudo-quote type operator (not like the quasi-quoting as Lisp has) to
 > switch into the mode for accepting this rewriting input. My first
 > thought is to reserve the semi-colon ";" for this.

Yup, GENS uses semicolon as a basic environment concatenation operator, 
in other words a union. The other basic operator is ".". This one could 
be thought of as the mathematical function-composition operator. In 
short, "Env . Expr" means "evaluate Expr in environment Env", while "Env 
; Expr" means "evaluate Expr in environment Env, and then merge it into 
Env". So you can also think of the "." operator as a method call, and 
";" as a sequence of operations, though they're capable of much more.