From: "Jeffrey R. Carter" <spam.not.jrcarter@acm.not.spam.org>
Subject: Re: Ripple effect
Date: Tue, 05 Sep 2006 21:36:52 GMT
Date: 2006-09-05T21:36:52+00:00 [thread overview]
Message-ID: <U5mLg.171961$1i1.102826@attbi_s72> (raw)
In-Reply-To: <wccpseab7u4.fsf@shell01.TheWorld.com>
Robert A Duff wrote:
>
> I think I want something like Ada's "use". Pascal calls it "with" (for
> records, as opposed to packages). It has nasty Beaujolais-like effects,
> but that's not necessary. One of the brilliant things Ichbiah did was
> to eliminate Beaujolais effects. Well, almost -- Ada 9X finished the
> job. And Ichbiah didn't go far enough in that regard -- I would
> eliminate hiding entirely.
OK. I'm leaning the other way.
> But I think perhaps the "use"-like thing belongs on the package, rather
> than on the clients of the package, because the person who writes the
> package needs to use naming conventions that make sense for use or
> not-use.
>
> I've considered calling it "open" -- it opens up the scope for
> visibility. An "open" module provides direct visibility of its contents
> to clients. And perhaps an "open" statement in addition, to be used by
> clients.
Thanks for the description. Are you saying that only an open module can
be opened by a client, but clients can not open a module and treated
like a closed module?
> My thinking is that if B uses A in a visible way, C pretty-much has to
> know about A. E.g.:
>
> with A;
> package B is
> procedue Mumble(X: A.T);
> end B;
>
> If C uses B.Mumble, it most likely needs to declare objects of type A.T.
> C certainly knows about type A.T! So non-transitive with's cause a lot
> of clutter -- C needs to 'with' everything it uses, plus everything
> those things are (visibly) based on, transitively. So high-level
> packages tend to have so many with_clauses that nobody wants to read
> them, largely defeating the purpose.
True, but we're talking about the case where B doesn't actually
reference A (the with of A is "otherwise unneeded").
> OTOH, if B uses A only for implementation, that's a different story.
> Then the import of A belongs on the body of B, and C shouldn't know
> about it. (My language doesn't have private parts.)
Agreed.
> By the way, the issue of bogus with_clauses is a real maintenance
> problem -- nobody ever deletes a with_clause, so they tend to
> accumulate. This problem is easily solved. The compiler should give an
> error message. An error that can be suppressed, so that you can
> temporarily have bogus with_clauses during development. That's
> essentially what GNAT does, with appropriate warning switches.
My sediments exactly. In fact, I do delete unneeded withs when I find them.
--
Jeff Carter
"There's no messiah here. There's a mess all right, but no messiah."
Monty Python's Life of Brian
84
next prev parent reply other threads:[~2006-09-05 21:36 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-23 22:29 Ripple effect Jeffrey R. Carter
2006-08-24 9:21 ` Maciej Sobczak
2006-08-24 23:39 ` Jeffrey R. Carter
2006-08-25 7:03 ` Maciej Sobczak
2006-08-24 18:22 ` Adam Beneschan
2006-08-24 23:40 ` Jeffrey R. Carter
2006-09-04 13:52 ` Robert A Duff
2006-09-04 15:15 ` Jeffrey R. Carter
2006-09-04 18:06 ` Robert A Duff
2006-09-05 2:33 ` Jeffrey R. Carter
2006-09-05 7:23 ` Dmitry A. Kazakov
2006-09-05 16:28 ` Robert A Duff
2006-09-05 16:23 ` Robert A Duff
2006-09-05 21:36 ` Jeffrey R. Carter [this message]
2006-09-07 18:18 ` Robert A Duff
2006-09-08 22:02 ` Jeffrey R. Carter
2006-09-06 0:10 ` Randy Brukardt
2006-09-07 18:30 ` Robert A Duff
2006-09-07 21:21 ` Simon Wright
2006-09-08 2:08 ` Randy Brukardt
2006-09-09 14:55 ` adaworks
2006-09-05 23:52 ` Randy Brukardt
2006-09-07 19:09 ` Adam Beneschan
2006-09-07 19:21 ` Ed Falis
2006-09-07 19:46 ` Larry Kilgallen
2006-09-08 13:06 ` Ed Falis
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox