
<HTML><HEAD><TITLE>CosmicOS message</TITLE></HEAD>
<BODY BGCOLOR='#ffffff'>
<HR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT><A NAME='17'><FONT COLOR=red>#&nbsp;HACK describe changes to the implicit interpreter to allow new special forms</FONT></A></TT><BR>
<TT>[<A HREF='sound.cgi?s=21101321001001302321100132233'>hear</A>] </TT><TT>(define base-translate / translate);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21101321100130232110032100101302321111322103221001013321000003321000000322100100130232100101332233'>hear</A>] </TT><TT>(define translate /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;if <font style='background-color: #cdffff'>(= </font><font style='background-color: #9bffff'>(x)</font><font style='background-color: #cdffff'> 32)</font> 64 <font style='background-color: #ffcdff'>(base-translate / x)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2103210000032100000032233'>hear</A>] </TT><TT>(= 32 64);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2103221010321000003210000003321000000032233'>hear</A>] </TT><TT>(= <font style='background-color: #cdffff'>(+ 32 64)</font> 128);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21101321100130232100100132233'>hear</A>] </TT><TT>(define translate / base-translate);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=210030232103210000032100000032233'>hear</A>] </TT><TT>(not / = 32 64);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=210322101032100000321000000332110000032233'>hear</A>] </TT><TT>(= <font style='background-color: #cdffff'>(+ 32 64)</font> 96);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;now can create a special form for lists</TT><BR>
<TT>[<A HREF='sound.cgi?s=211013211001302321100321001013023211113221100030232100101332210010013023210010133221111322103221110103023210010133210000332211001302321111113222111001321033211100132211110130232111100302321001013332211110030232100101333221001001302321001013332233'>hear</A>] </TT><TT>(define translate /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;if <font style='background-color: #cdffff'>(number? /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffff'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>(base-translate /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffffcd'>(if </font><font style='background-color: #ffff9b'>(= </font><font style='background-color: #ffff69'>(head / x)</font><font style='background-color: #ffff9b'> vector)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffcd'>(translate /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffcd'>prepend</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #9bffcd'>(</font><font style='background-color: #69ffcd'>(list 2)</font><font style='background-color: #9bffcd'> list </font><font style='background-color: #9bcdcd'>(list-length / tail / x)</font><font style='background-color: #9bffcd'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>(tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>x)</font><font style='background-color: #cdffcd'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdcd'>(base-translate /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdcd'>x)</font><font style='background-color: #ffffcd'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=210000003221000032132103211332221110013211332132103211332233'>hear</A>] </TT><TT>(list= <font style='background-color: #cdffff'>(vector 1 2 3)</font> <font style='background-color: #ffcdff'>(</font><font style='background-color: #ff9bff'>(list 3)</font><font style='background-color: #ffcdff'> 1 2 3)</font>);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;now to desugar let expressions</TT><BR>
<TT>[<A HREF='sound.cgi?s=21101321001010302321100132233'>hear</A>] </TT><TT>(define translate-with-vector / translate);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2110132100101130232110032100101302321100321001100302321111322103221111013023210010133203322110013023210011003322100101132211110030232100101332210000322100003211003221110103023211101030232100101332210011003332211101030232111100302321110103023210010133332233'>hear</A>] </TT><TT>(define translate-let-form /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? body /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;if <font style='background-color: #cdffff'>(= </font><font style='background-color: #9bffff'>(list-length / x)</font><font style='background-color: #cdffff'> 0)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>(translate /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>body)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffffcd'>(translate-let-form</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffff9b'>(tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffff9b'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffcd'>(vector</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #9bffcd'>(vector ? </font><font style='background-color: #69ffcd'>(head / head / x)</font><font style='background-color: #9bffcd'> </font><font style='background-color: #9bcdcd'>(body)</font><font style='background-color: #9bffcd'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>(head /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>head /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>x)</font><font style='background-color: #cdffcd'>)</font><font style='background-color: #ffffcd'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211013211001302321100321001013023211113221100030232100101332210010103023210010133221111322103221110103023210010133210011013322100101132211101030232111100302321001013322111010302321111003023211110030232100101333221001010302321001013332233'>hear</A>] </TT><TT>(define translate /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;if <font style='background-color: #cdffff'>(number? /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffff'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>(translate-with-vector /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffffcd'>(if </font><font style='background-color: #ffff9b'>(= </font><font style='background-color: #ffff69'>(head / x)</font><font style='background-color: #ffff9b'> let)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffcd'>(translate-let-form</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #9bffcd'>(head /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #9bffcd'>tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #9bffcd'>x)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>(head /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>tail /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdcd'>x)</font><font style='background-color: #cdffcd'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdcd'>(translate-with-vector /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdcd'>x)</font><font style='background-color: #ffffcd'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100110132221001013210100333221032210010133210100332233'>hear</A>] </TT><TT>(let <font style='background-color: #cdffff'>(</font><font style='background-color: #9bffff'>(x 20)</font><font style='background-color: #cdffff'>)</font> <font style='background-color: #ffcdff'>(= </font><font style='background-color: #ff9bff'>(x)</font><font style='background-color: #ffcdff'> 20)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100110132221001013211001033221001003210100333221032210113221001013322100100333211110332233'>hear</A>] </TT><TT>(let <font style='background-color: #cdffff'>(</font><font style='background-color: #9bffff'>(x 50)</font><font style='background-color: #cdffff'> </font><font style='background-color: #cdcdff'>(y 20)</font><font style='background-color: #cdffff'>)</font> <font style='background-color: #ffcdff'>(= </font><font style='background-color: #ff9bff'>(- </font><font style='background-color: #ff69ff'>(x)</font><font style='background-color: #ff9bff'> </font><font style='background-color: #ff9bcd'>(y)</font><font style='background-color: #ff9bff'>)</font><font style='background-color: #ffcdff'> 30)</font>);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;the is-list function is now on dubious ground</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;this stuff will be replaced with typing ASAP</TT><BR>
<TT>[<A HREF='sound.cgi?s=21101321001110302321100321001013023210030232110003023210010132233'>hear</A>] </TT><TT>(define is-list /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;not /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;number? /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;x);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100111030232211100132103321321132233'>hear</A>] </TT><TT>(is-list / <font style='background-color: #cdffff'>(list 2)</font> 1 3);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21001110302322111001320332233'>hear</A>] </TT><TT>(is-list / <font style='background-color: #cdffff'>(list 0)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100302321001110321011132233'>hear</A>] </TT><TT>(not / is-list 23);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21001110302322111001321133222111001321033210321133213221100321001013023210103221001013321010332233'>hear</A>] </TT><TT>(is-list /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;<font style='background-color: #cdffff'>(list 3)</font> <font style='background-color: #ffcdff'>(</font><font style='background-color: #ff9bff'>(list 2)</font><font style='background-color: #ffcdff'> 2 3)</font> 1 <font style='background-color: #ffffcd'>(? x / + </font><font style='background-color: #ffff9b'>(x)</font><font style='background-color: #ffffcd'> 10)</font>);</TT><BR>
<BR>

</BODY>
</HTML>
