Project update

Brian Rice
Wed Feb 13 08:34:02 2002

At 10:19 AM -0500 2/13/02, Mario wrote:
>Where can I read more about Slate? What I've found on the tunes-wiki 
>links looks interesting, but not very complete. is the primary documentation site. I will be 
updating this as I resolve each issue.

>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.

Interesting. I'll have to take a look at it.

>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.

Thanks for the pointer. I'll let you know if I have any questions.