<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2743.600" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi all,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I have been working on my own 
computerlanguage<BR>based on smalltalk (and little bit of everything).<BR>I see 
much of the discussions here related to the same problems I have been 
solving.<BR>At least I hope I solved them..</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>-------Proposal 1 use modules to manage 
behaviour-------<BR>1) Managing complex behaviour would be more structured by 
using modules..<BR>All related methods of different classes can be defined 
within one module.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Modules can really helps on the long term 
development.<BR>Modules are first defined using a special fileIn/fileOut format, 
to enable incremental separation of the image.</FONT></DIV>
<DIV>&nbsp;</DIV><FONT face=Arial size=2>
<DIV><BR>------Proposal 2 use text to define modules and classes---------<BR>2) 
defining modules and classes</DIV>
<DIV>&nbsp;</DIV>
<DIV>First I would like to start to introduce a script which defines the modules 
and classes..</DIV>
<DIV>&nbsp;</DIV>
<DIV>MyFirstModule := &lt;&lt; Module |</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; MyPoint := &lt;&lt; Class 
|<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varX. 
varY.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#x<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^varX.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#y<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^varY</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#x:x<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varX:= x.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#y:y<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varY:= y.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<BR>&nbsp;&nbsp;&nbsp; &gt;&gt;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; MyStorage:= &lt;&lt; Class |<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
#storeInto:File<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
#loadFrom:File<BR>&nbsp;&nbsp;&nbsp;&nbsp; #<BR>&nbsp;&nbsp; 
&gt;&gt;<BR>&gt;&gt;.</DIV>
<DIV>&nbsp;</DIV>
<DIV>This far it is simple..<BR>I use a construct definition &lt;&lt; &gt;&gt; 
to define anything in my system..<BR>There are many different constructs 
possible:<BR>Module, Class but also Application or DeviceDriver or 
Primitive.<BR>These could all be meta-constructions.</DIV>
<DIV>&nbsp;</DIV>
<DIV>You probably have some nice idea's too :-)</DIV>
<DIV>&nbsp;</DIV>
<DIV>------Proposal 3a define inheritance by including behaviour---------<BR>3) 
defining imports and inheritance</DIV>
<DIV>&nbsp;</DIV>
<DIV>The Classname&lt;&lt;&gt;&gt; construct defines extension within current 
construct,<BR>i.e. inheritance...</DIV>
<DIV>&nbsp;</DIV>
<DIV>The identifier&lt;&lt;&gt;&gt; construct defines a local extension. Is 
currently used for imports.</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>MySecondModule:= &lt;&lt; Module |<BR>&nbsp;&nbsp; 
import&lt;&lt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; MyFirstModule.<BR>&nbsp;&nbsp; 
&gt;&gt;.<BR>&nbsp;&nbsp; version:= 3;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; MyStoredPoint:= &lt;&lt;Class|<BR>&nbsp;&nbsp;&nbsp; 
MyPoint&lt;&lt;<BR>&nbsp;&nbsp;&nbsp; &gt;&gt;.<BR>&nbsp;&nbsp;&nbsp; 
MyStorage&lt;&lt;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#storeInto:File<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File 
writeVar:varX.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File 
writeVar:varY.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#loadFrom:File<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varX:= File 
readVar.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varY:= File 
readVar.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<BR>&nbsp;&nbsp;&nbsp; 
&gt;&gt;.<BR>&nbsp; &gt;&gt;.<BR>&nbsp; <BR>&gt;&gt;.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Some may notice that:<BR>MyFirstModule&lt;&lt; &gt;&gt; could also be an 
import definition..</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>------Proposal 3b define inheritance by extending 
behaviour---------</DIV>
<DIV>&nbsp;</DIV>
<DIV>The class can als be extended using a similar syntax</DIV>
<DIV>&nbsp;</DIV>
<DIV>MyThirdModule:= &lt;&lt; Module |<BR>&nbsp; import&lt;&lt; 
<BR>&nbsp;&nbsp;&nbsp; Math. MyFirstModule. <BR>&nbsp; &gt;&gt;<BR>&nbsp; 
MyPoint:&lt;&lt;&nbsp; "this is an extension"<BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp; 
MyStorage&lt;&lt;&nbsp; "I inherit from MyStorage 
again"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#storeInto:File<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File 
writeVar:varX.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File 
writeVar:varY.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#loadFrom:File<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varX:= File 
readVar.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varY:= File 
readVar.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<BR>&nbsp;&nbsp;&nbsp; 
&gt;&gt;.<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp; &gt;&gt;<BR>&nbsp; 
Integer:&lt;&lt;<BR>&nbsp;&nbsp;&nbsp; #@ y<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 
newPoint |<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newPoint:= MyStoredPoint 
new.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newPoint x:self; 
y:y.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^newPoint.<BR>&nbsp;&nbsp;&nbsp; 
#<BR>&nbsp; &gt;&gt;<BR>&gt;&gt;</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>------Proposal 4 change grammar a bit for some 
typedefinitions---------</DIV>
<DIV>&nbsp;</DIV>
<DIV>I'll use the example below</DIV>
<DIV>&nbsp;</DIV>
<DIV>//In my own language I use a slightly different sytnax which enables 
typedefinitions..<BR>//And even parametric types.<BR>//I'll just add the 
different syntax for the good of discussion..<BR>//I wonder if anyone here 
really cares about what characters are used for certain definitions,<BR>//as 
long they are usefull..<BR>//<BR>//<BR>//&nbsp; MyPoint:= 
&lt;&lt;Class|<BR>//&nbsp;&nbsp;&nbsp; varX; <BR>//&nbsp;&nbsp;&nbsp; 
varY;&nbsp;&nbsp; <BR>//&nbsp;&nbsp;&nbsp; "x":={ varX; };&nbsp;&nbsp; #methods 
are defined as blocks<BR>//&nbsp;&nbsp;&nbsp; "x:" := { ?x |&nbsp; varX:= x; 
};&nbsp; # ? defines input, ! defines output<BR>//&nbsp;&nbsp;&nbsp; 
<BR>//&nbsp;&nbsp;&nbsp; "y":={ !result| result:= varY; };&nbsp; 
<BR>//&nbsp;&nbsp;&nbsp; "y:":= { ?y | varY:= y; 
};<BR>//<BR>//&nbsp;&nbsp;&nbsp; varZ: Double,Integer;&nbsp;&nbsp; # type 
definitions.. <BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # anything 
that implements Double or Integer can work<BR>//&nbsp;&nbsp;&nbsp; count:: 
Integer32 =0;&nbsp;&nbsp; # strict type definition and 
initialisation<BR>//<BR>//&nbsp;# I add a z here to show some more 
options<BR>//<BR>//&nbsp;&nbsp;&nbsp; "z"(!d:Double,Integer):={ d:= varZ; 
};<BR>//&nbsp;&nbsp;&nbsp; "z: ?d:Double":= { varZ:= d; 
};<BR>//<BR>//&nbsp;&nbsp;&nbsp; ":Point":= { Point newX: varX andY: varY; }; 
<BR>//&nbsp;&nbsp;#defines point as replacement if 
necessary<BR>//&nbsp;&nbsp;#often easier than inheritance..<BR>//<BR>//&nbsp; 
&gt;&gt;<BR>//<BR>//&nbsp; #Since the types and methods are binded at runtime, 
<BR>//&nbsp; # we can may constants in definitions too..<BR>//<BR>//&nbsp; 
Integer:&lt;&lt;<BR>//&nbsp;&nbsp;&nbsp; "factorial:?0":= 
{1};<BR>//&nbsp;&nbsp;&nbsp; "factorial:?n:Integer":= { n*(n-1) factorial; 
}<BR>//&nbsp; &gt;&gt;<BR>//<BR>//&nbsp; 
Integer:&lt;&lt;<BR>//&nbsp;&nbsp;&nbsp; 
"divmod()":(?x:Integer;!div,!mod:Integer):= { div:= self//x; mod:= self\\x 
};<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #call with:&nbsp; 5 divmod(?x:= 3; 
resDiv:= div; resMod:= mod);<BR>//&nbsp; &gt;&gt;<BR>//</DIV>
<DIV>&nbsp;</DIV>
<DIV>I don't know how to do such definitions in current smalltalk grammar.<BR>I 
thought of using @ for types.. and :: for output, but these symbols <BR>differ 
too much from other languages..</DIV>
<DIV>&nbsp;</DIV>
<DIV>-----------------------------</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>These&nbsp;modules&nbsp;reduce a bit of complexity of modules and 
behaviours (traits, inheritance). </DIV>
<DIV>The script&nbsp;of managing projects and fileIn.</DIV>
<DIV>
<DIV>The fflexible typesystem might add to speed and such..</DIV>
<DIV>&nbsp;</DIV>I know the problems are not all solved yet, but it is just a 
start.</DIV></FONT>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>