Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!bellcore-2!bellcore!mbr From: mbr@flash.bellcore.com (Mark Rosenstein) Newsgroups: comp.lang.lisp Subject: Re: Common Lisp Package System Considered Harmful Message-ID: Date: 19 Oct 90 11:35:20 GMT References: <271CDC30.1E54@wilbur.coyote.trw.com> <2865200060@ARTEMIS.cam.nist.gov>?<2298@heavens-gate.lucid.com>?<271BA6D1.5B83@wilbur.coyote.trw.com> <271E0D40.451E@wilbur.coyote.trw.com> Sender: news@bellcore.bellcore.com Reply-To: mbr@breeze.bellcore.com (Mark Rosenstein) Organization: Bellcore, Morristown, NJ Lines: 89 In-reply-to: scott@wiley.uucp's message of 18 Oct 90 20:14:56 GMT In article <271E0D40.451E@wilbur.coyote.trw.com> scott@wiley.uucp (Scott Simpson) writes: From: scott@wiley.uucp (Scott Simpson) Newsgroups: comp.lang.lisp Summary: I'm not convinced. I agree that the intent that I intended to use packages for and the intent they were designed for are probably quite different. I don't know what packages were designed for. I have been told that they are to be used for separating large subsystems of code. The point I have been trying to make is that the information hiding granularity of packages is way too coarse and no other mechanism in Lisp can give me the granularity I want (i.e., class based) easily. I don't find packages very useful and I wouldn't cry a tear if they were simply removed from the language. Well, I'd be major depressed. Ain't you never had name conflicts in C when you try to load multiple big subsystems? It's sort of hard to imagine running in a world with flavors, CLOS and PCL all present without packages, much less CLIM, CLM, CLX, and half a dozen user packages. They can mostly all coexist, call each other, without much fuss. [If one object system is good, two must be better, and three well, you know, the old code that wouldn't die]. I tend to run a given lisp world for weeks. By the end, I have metering loaded and this and that, and suprise, suprise they don't interfer with each other. I shudder to think what would happen if all their symbols were in the user package. I expect one uses packages to avoid conflict with other subsystems that you have no control over as well as to segment your program. I don't know that there is a good treatment, or even if one is possible on how to segment functionality along package lines. For small systems one will do and bigger stuff, I've used up to say a dozen, but that might have been a few too many. Yes. I hate this. The double colon is way too similar to the single colon. They don't seem that similar to me. Everytime I use a double colon, the good code fairie comes into my office and smacks me on the side of the head. Unless of course, I'm calling some system function that isn't documented, but I need. Then I just pay for it in the next release when it changes under me. But I know. I do it to myself of my own volition. I honestly have never mistakenly used a double colon. I can concede that for efficiency reasons or some such it is non unreasonable to have back doors that can break the abstraction barrier. C++ does this with its ugly friend functions. However, I do think that they should be discouraged and if used, should be quite noticeable. It is said that they put gotos in Ada (especially for automatically generated Ada programs) but that they discourage their use and make them stick out like a sore thumb. Ada's labels look like <