Path: news.daimi.aau.dk!news.uni-c.dk!sunic!sunic.sunet.se!trane.uninett.no!Norway.EU.net!EU.net!howland.reston.ans.net!cs.utexas.edu!not-for-mail From: novy1@siren1.zcu.cz (Marek Novy) Newsgroups: comp.lang.beta Subject: Re: Just add water (from the OUTER space)! Date: 26 Jun 1995 08:57:45 -0500 Organization: UTexas Mail-to-News Gateway Lines: 51 Sender: nobody@cs.utexas.edu Message-ID: <9506261555.ZM1542@siren1.zcu.cz> NNTP-Posting-Host: news.cs.utexas.edu news:3se3ic$ar0@nic.zcu.cz Erik, thanks for a such extended analysis. But my original idea was quite different. I recognize my original definition with functional ancestor being wrong. I'm sorry. I'l try to show what I mean on a slightly modified Erik's example. (# o: (# t: ^text enter t[] do t[]->puttext #); a: (# do 'a'->o; inner; 'a'->o #); b: a(# do 'b'->o; inner; 'b'->o #); c: b!2(# do 'c'->o; outer; 'c'->o #); d: c!2(# do 'd'->o; outer; 'd'->o #); e: d!4(# do 'e'->o; inner; 'e'->o #); f: e(# do 'X'->o; #); do &a; newline; (* "aa" *) &b; newline; (* "abba" *) &c; newline; (* "acbbca" *) &d; newline; (* "acdbbdca" *) &e; newline; (* "aeea" *) &f; newline; (* "aeXea" *) #) 1. aa:bb!n means 'do' of aa will constructed from the 'do' of bb skipping over (n-1) levels. For instance the 'do' of e from the previous example is made from the 'do' of c avoiding 3 levels c,d,b. 2. outer executes only imperatives lexically in a do-part, not the whole 'do'. For instance 'do' of d is created from 'do' of c. What is like (a.. (c.. (b.. inner ..b) ..c) ..a) avoiding one (b) level: (a.. (c.. (d.. outer ..d) ..c) ..a) and expanding 'outer' with avoided (b) level: (a.. (c.. (d.. (b.. inner ..b) ..d) ..c) ..a) I hope this is better solution, not so crazy and more compatible with the current execution model. -- Marek Novy, University of West Bohemia +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Look at BatOS. A new approach to object OS : http://ody.zcu.cz/~novy1