<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>I forgot to point out something I half agree with -- overloading...We have a plain text index over a very large code base.<BR>
Look for "Close", and hypothetically, I'm making up names here, you find File::Close, Window::Close, Session::Close -- not too bad for the implementations, if you can look for "File::Close", but if you want to find the callers, f.Close, w.Close, s.Close, etc...<BR>
 <BR>
A "problem" with C++ is that the compiler implements it very well, and nothing else comes close.<BR>
Good luck evaluating expressions in a debugger, search, "refactoring editors", "wizards" that can change code, etc.<BR>
It's neat that Modula-3 is simple enough that the remoting feature can be a separate parser over the one language, instead of having a seperate interface language..<BR>
 <BR>
But still it is <EM>super</EM> tempting to have function names qualified by at least the static types of their first parameter or all parameters, if not the dynamic types.<BR>
 <BR>
Qualification by the dynamic type of the first parameter is if course super common, super popular, even supported in Modula-3.. and maybe in C via function pointers..though at least in C it is obvious when such "switching" is being used (except, even then, it is often hidden by an upper layer -- like, I call ReadFile/WriteFile and then way down under the covers there are drivers to switch between FAT, NTFS, SMB, etc.)<BR>
 <BR>
As to looseness and "duck typing", well, I see both sides here really..<BR>
 <BR>
And I am well aware of how buggy code is..<BR>
 <BR>
 - Jay<BR><BR><BR>

<HR id=stopSpelling>
<BR>
> Date: Fri, 16 Nov 2007 22:24:15 +0100<BR>> From: lemming@henning-thielemann.de<BR>> To: rodney.bates@wichita.edu<BR>> CC: m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] small array in modula-3?<BR>> <BR>> <BR>> On Fri, 16 Nov 2007, Rodney M. Bates wrote:<BR>> <BR>> > If you don't want to have to write the module name as a qualifier, you can<BR>> > rename a procedure too, with a constant declaration (Procedures in Modula-3<BR>> > are actually the same thing a constants of procedure type.)<BR>> ><BR>> > CONST DoSomething = M.DoSomething<BR>> > ...<BR>> > DoSomething ( v )<BR>> <BR>> It would have been nice if PROCEDURE declarations would reflect this, like<BR>> in functional languages. Say<BR>> <BR>> CONST<BR>> Sin =<BR>> PROCEDURE (x: LONGREAL;): LONGREAL<BR>> BEGIN<BR>> ...<BR>> RETURN y;<BR>> END;<BR>> <BR>> This would also be the key for anonymous functions or loops as higher<BR>> order functions. Just an idea, it's certainly simpler just to use a<BR>> functional language. :-)<BR><BR><br /><hr />Climb to the top of the charts!  Play Star Shuffle:  the word scramble challenge with star power. <a href='http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_oct' target='_new'>Play Now!</a></body>
</html>