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.
http://slate.tunes.org 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
>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.