<!doctype html public "-//W3C//DTD W3 HTML//EN">
<html><head><style type="text/css"><!--
blockquote, dl, ul, ol, li { padding-top: 0 ; padding-bottom: 0 }
 --></style><title>Re: [ENH] UpArrow as operator</title></head><body>
<div>Marcel --</div>
<div><br></div>
<div>At 9:37 AM -0000 3/18/99, Marcel Weiher wrote:</div>
<div>&gt;Hmm, is there anything you hadn't already done in '72 ?
:-)</div>
<div><br></div>
<div><b>Yep, lots of things ...</b></div>
<div><b><br></b></div>
<div>&gt;It would be very interesting to hear what some of the
implications&nbsp; </div>
<div>&gt;were, and why the change was made to simple returns
(presumably to&nbsp; </div>
<div>&gt;simplify the implementation and usage patterns for the common
case).</div>
<div><br></div>
<div><b>As chronicled in the HOPL II book, the origin of Smalltalk-72
was to settle a bet, and to establish as a kind of joke just how small
&quot;everything with power&quot; could be. I didn't expect that Dan
would actually implement the joke (this was his joke), and once it got
implemented, it was quite useful right away. Once it started to get
used, it wound up &quot;taking over&quot; in a very similar way to the
story of LISP a dozen years earlier.</b></div>
<div><b>&nbsp;&nbsp;&nbsp;&nbsp; The pragmatics of actual programming
tend to convert &quot;math&quot; into &quot;science&quot; and then
into &quot;engineering&quot;. In the process, a few of the original
theoretical goals were set aside in favor of getting on the rich
learning curve of actually programming in the first real
OOPL.</b></div>
<div><b>&nbsp;&nbsp;&nbsp;&nbsp; Dan and I have not forgotten the
set-aside goals and hope to eventually get to all of them this time
around. For example, another collection of terrific insights were put
forth in Dave Fisher's thesis (CMU-1970) about extensible control
structures. This work -- though not OOP based -- was powerfully
complementary to the encapsulation abstractions that formed one part
of my thesis. But we neither had the machine cycles nor human cycles
to reformulate Fisher's ideas and optimize them so they could be put
deep into the kernel.</b></div>
<div><b><br></b></div>
<div>&gt;My explorations into iteration have led me to the conclusion
that&nbsp; </div>
<div>&gt;this meaning of the 'return' construct would greatly simplify
that&nbsp; </div>
<div>&gt;area by making it possible to encapsulate even very
complicated&nbsp; </div>
<div>&gt;traversals, and it turns out that the iteration constructs of
the&nbsp; </div>
<div>&gt;Sather language do something very similar (though not as
generally).&nbsp; </div>
<div><br></div>
<div>&gt;Another application is backtracking (which, I think,
corresponds to&nbsp; </div>
<div>&gt;a 'traversal' over an implicit structure representing the&nbsp;
</div>
<div>&gt;computation).</div>
<div>&gt;</div>
<div>&gt;Combining the ideas of (a) getting multiple results from a
single&nbsp; </div>
<div>&gt;message send (a dynamic collection) and (b) sending messages
to&nbsp; </div>
<div>&gt;multiple objects makes for a *very* powerful programming
model that&nbsp; </div>
<div>&gt;is still conceptually as simple as the original ST message
send.</div>
<div><b>&nbsp;&nbsp;&nbsp;&nbsp; I agree. Again, as you are aware,
Smalltalk doesn't have to use a subroutine discipline -- and this
wasn't the original intention at the beginning -- but we've never
gotten around to putting in the extra hooks to make &quot;sending&quot;
and &quot;receiving&quot; more general and symmetric. Perhaps now is
the time, and perhaps you would like to help?</b></div>
<div><b><br></b></div>
<div><b>Cheers,</b></div>
<div><b><br></b></div>
<div><b>Alan</b></div>
<div><b><br></b></div>
<div>&gt;&gt; From: Alan Kay &lt;Alan.C.Kay@disney.com&gt;</div>
<div>&gt;&gt;</div>
<div>&gt;&gt; Interesting transitions ...</div>
<div>&gt;&gt;</div>
<div>&gt;&gt; In an early Smalltalk conception, what is now the up
arrow was a symbol </div>
<div>&gt;&gt; that stood for the sender object, i.e. it was a special
symbol with a </div>
<div>&gt;&gt; special meaning (like self), so you were
&quot;sending-back&quot; the result.</div>
<div><br></div>
<div>&gt;&gt;</div>
<div>&gt;&gt; (And, in the earliest &quot;one-pager&quot; of
Smalltalk, sending and receiving </div>
<div>&gt;&gt; were</div>
<div>&gt;&gt; actually symmetric: one &quot;sentback&quot; the
result(s) to the original sender </div>
<div>&gt;&gt; which could &quot;takeback&quot; and bind the (possibly
multiple) result(s).)</div>
<div><br></div>
<div><br></div>
</body>
</html>