Path: utzoo!utgpu!watserv1!watmath!att!att!dptg!ulysses!andante!mit-eddie!mintaka!olivea!samsung!uakari.primate.wisc.edu!sdd.hp.com!usc!trwind!gumby!wiley!scott From: scott@wiley.uucp (Scott Simpson) Newsgroups: comp.lang.lisp Subject: Re: Common Lisp Package System Considered Harmful Summary: I'm not convinced. Keywords: Packages, CLOS, Object-Oriented Programming, Common Lisp Message-ID: <271E0D40.451E@wilbur.coyote.trw.com> Date: 18 Oct 90 20:14:56 GMT References: <271CDC30.1E54@wilbur.coyote.trw.com> <2865200060@ARTEMIS.cam.nist.gov>?<2298@heavens-gate.lucid.com>?<271BA6D1.5B83@wilbur.coyote.trw.com> Sender: news@wilbur.coyote.trw.com (News Software) Reply-To: scott@wiley.UUCP (Scott Simpson) Organization: TRW Inc., Redondo Beach, CA Lines: 76 In article <2865200060@ARTEMIS.cam.nist.gov> miller@cam.nist.gov writes: >I think that CLOS & Packages are two mechanisms with different scales >and intents. And although they both seem to deal with `information >hiding' they deal with it in quite different ways. 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. I don't know if I agree that CLOS deals with information hiding. How do you mean? >One point is that, in Lisp, nothing is REALLY hidden -- some things are >just a little less visible than others. Want a non-exported symbol from >a package? Use two colons. Want to get at an unapproved slot from a >clos instance? Just use slot-value. Yes. I hate this. The double colon is way too similar to the single 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 <