From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@cse.psu.edu Subject: Re: [9fans] same functions everywhere From: rog@vitanuova.com In-Reply-To: <200305082250.h48Mod527047@augusta.math.psu.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Date: Fri, 9 May 2003 03:55:43 +0100 Topicbox-Message-UUID: a56793fe-eacb-11e9-9e20-41e7f4b1d025 > This is fine, but one question I have is why cut and paste instead of > putting sort() and mergesort() into their own file and then including > it after defining T and greater()? Just curious. lack of surprises. if i see that a source file has been included, i have no idea what names the namespace has been polluted with. one thing that's particularly nice about limbo is that, with the necessary exception of module names, if i see a name referred to, i can find out what it refers to very quickly and surely in the local source file (defined locally, or explicitly imported from a module). the moment i start including external source code, i'm again awash in a sea of uncertainty. much better to explicitly include the code: it keeps the code dependencies as narrow as the module interfaces that have been included, which are easy to understand, well-defined and well-behaved (no callbacks, for example). whenever i've had to make significant changes to an interface that's used by many modules, the fact that all dependencies are explicitly defined, and all names explicitly declared has made life soooo much easier and less error-prone. it makes for code that is much more malleable and reusable (despite the apparent contradiction with Limbo being such a strongly typed language). sorry, this has veered way off topic!