campbell@maynard.BSW.COM (Larry Campbell) (02/23/88)
From article <3490002@otter.hple.hp.com>, by kers@otter.hple.hp.com (Christopher Dollin): > I'd go for "one-datatype-per-file". Spliting the files up using directories is > just a hack for controlling a growing namespace; NO existing language that I > know of has a decent solution for this (and if *you* know of one that does, > **please** let me know!). How about packages, as found (at least) in Common LISP and Ada? -- Larry Campbell The Boston Software Works, Inc. Internet: campbell@maynard.bsw.com 120 Fulton Street, Boston MA 02109 uucp: {husc6,mirror,think}!maynard!campbell +1 617 367 6846
kers@otter.hple.hp.com (Christopher Dollin) (02/24/88)
I said: > I'd go for "one-datatype-per-file". Spliting the files up using directories > is just a hack for controlling a growing namespace; NO existing language that > I know of has a decent solution for this (and if *you* know of one that does, > **please** let me know!). "campbell@maynard.BSW.COM (Larry Campbell)" said: > How about packages, as found (at least) in Common LISP and Ada? Well, those were the ones I was thinking of when I said that no existing language solved the problem! [BTW - I don't think you can compare the Ada and Lisp notions of packages, except as you can compare thumbscrews and drowning.] I don't think Ada even attempts to solve the problem. Correct me if I'm wrong, but isn't there a single flat namespace for modules? So how do I plug together different subsystems built independantly? The Common Lisp system has all sorts of problems. It packages symbols (words; names), not variables. The package namespace is flat. It has no notion of access control (you can grab the innards of any package without a declared intention to do do). It does not support transitive export of things. (If it did, you can bet that it wouldn't support *non*-transitive export). You can't rename across a import/export boundary to avoid name clashes. Etc. It's just like filing systems. They give you this way of separating files one from another, and Lo! make it hard to join them together again. That's why Unix has hard links. And symbolic links. And a tree structured hierarchy, or a DAG if you're super-user. And PATH. And CDPATH. And (csh) ~. And ......... PS No, Pop doesn't get it right either. Regards, Kers | "Why Lisp if you can talk Poperly?"