comp.lang.ada
 help / color / mirror / Atom feed
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



  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