From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: 'withing' problem
Date: 16 Nov 2001 09:37:37 -0500
Date: 2001-11-16T14:40:07+00:00 [thread overview]
Message-ID: <uzo5mu6ha.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: x7vu1vv6b02.fsf@smaug.pushface.org
I'm just voicing my support for Simon here. Forcing tools to break
withing cycles is a bad idea. The "with type" extension in GNAT is a
good way to solve the problem.
Apparently there are some issues with it that make it not a good idea
in general; I hope that either a replacement is found soon, or that
the ARG decides that the benefits outweigh the problems.
Simon Wright <simon@pushface.org> writes:
> "Matthew Heaney" <mheaney@on2.com> writes:
>
> > "Simon Wright" <simon@pushface.org> wrote in message
> > news:x7vy9lbxih0.fsf@smaug.pushface.org...
> > > I think that people looking at this model, perhaps for the purpose of
> > > maintaining code written to implement it, need to have a very clear
> > > idea of how the code will look.
> >
> > My philosophy is, if you want to have a good idea how the code will look,
> > then you should look at the code... In any case, you should just ignore the
> > forward declaration package, as it's just syntactic overhead that has no
> > bearing on your model of the problem.
> >
> > > It's a Bad Thing if you need to make arbitrary decisions to break
> > > cycles.
> >
> > You haven't explained why arbitrary decisions are bad, so this isn't a very
> > cogent argument, which just reduces to "I don't like it, so it's bad."
>
> Well, "arbitrary" translates roughly to "unpredictable", "surprising"
> both of which are definitely bad (I think so, anyway).
>
> > And besides, this solution is no different from other areas of the language.
> > For example, if you want to declare a recursive pair of subprograms, then
> > you have to forward declare one of them (and it's arbitrary which one):
>
> Here, you can "arbitrarily" (or following the warnings given by
> -gnaty) forward declare _both_ (ie, _all_) subprograms. Symmetric.
>
> > > What would be even worse would be to have a framework code generator
> > > that applied heuristics to break cycles. I imagine that it wouldn't
> > > take much for such heuristics to make the opposite decision for minor
> > > model changes (remember that very few models are as simple as this
> > > one!)
> >
> > Let's concentrate on real problems. John Volan couldn't figure out
> > how to declare two mutually dependent abstractions in two separate
> > packages. I showed how to do this. Problem solved.
>
> This topic is a real problem for me.
>
>
> Does your Patient_Forward solution extends to declaring Doctor_Forward
> similarly? I get trouble at
>
> procedure Visit_Doctor
> (Patient : in out Patient_Type;
> Doctor : in out Root_Doctor'Class) is
> begin
> Treat_Patient (Doctor, Patient);
> patients.adb:9:22: expected type "Doctor_Type" defined at doctors.ads:6
> patients.adb:9:22: found type "Root_Doctor'Class" defined at doctors_forward.ads:3
> end;
>
--
-- Stephe
next prev parent reply other threads:[~2001-11-16 14:37 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-02 10:24 'withing' problem David Crocker
2001-11-02 10:58 ` David C. Hoos, Sr.
2001-11-02 21:32 ` Florian Weimer
2001-11-02 14:49 ` Robert Dewar
2001-11-05 9:49 ` David Crocker
2001-11-02 15:06 ` Wes Groleau
2001-11-02 15:21 ` Ted Dennison
2001-11-02 17:19 ` Ed Falis
2001-11-02 18:17 ` Preben Randhol
2001-11-02 19:15 ` Ed Falis
2001-11-03 2:52 ` DuckE
2001-11-03 9:50 ` Preben Randhol
2001-11-03 8:25 ` Simon Wright
2001-11-03 17:27 ` Richard Riehle
2001-11-04 10:23 ` Simon Wright
2001-11-08 10:58 ` Preben Randhol
2001-11-08 15:24 ` Peter Hend�n
2001-11-10 17:57 ` Simon Wright
2001-11-05 9:48 ` David Crocker
2001-11-05 20:36 ` Ted Dennison
2001-11-06 15:56 ` David Crocker
2001-11-07 15:06 ` Ted Dennison
2001-11-07 16:49 ` Darren New
2001-11-09 20:28 ` Matthew Heaney
2001-11-10 13:55 ` Preben Randhol
2001-11-12 15:10 ` Matthew Heaney
2001-11-10 18:12 ` Simon Wright
2001-11-12 15:13 ` Matthew Heaney
2001-11-13 7:01 ` Simon Wright
2001-11-14 16:10 ` Matthew Heaney
2001-11-15 20:21 ` Simon Wright
2001-11-15 21:07 ` Matthew Heaney
2001-11-16 14:37 ` Stephen Leake [this message]
2001-11-17 22:29 ` Richard Riehle
2001-11-18 14:53 ` Simon Wright
2001-11-19 5:51 ` Simon Wright
2001-11-19 15:23 ` Matthew Heaney
2001-11-19 17:19 ` 'withing' problem [code generation] Mark Johnson
2001-11-19 20:58 ` Stephen Leake
2001-11-19 21:20 ` Matthew Heaney
2001-11-21 6:20 ` Simon Wright
2001-11-20 0:50 ` Mark Biggar
2001-11-21 6:21 ` Simon Wright
2001-11-20 14:42 ` Mark Johnson
2001-11-20 16:34 ` David Crocker
2001-11-20 18:34 ` Richard Pinkall-Pollei
2001-11-20 18:43 ` Matthew Heaney
2001-11-20 20:37 ` Mark Lundquist
2001-11-22 11:49 ` David Crocker
2001-11-20 20:35 ` Mark Lundquist
2001-11-22 11:42 ` David Crocker
2001-11-19 19:30 ` 'withing' problem Preben Randhol
2001-11-03 8:26 ` Simon Wright
2001-11-03 8:38 ` Simon Wright
2001-11-05 9:54 ` David Crocker
2001-11-05 18:04 ` tmoran
2001-11-06 15:29 ` David Crocker
2001-11-07 0:38 ` tmoran
2001-11-07 10:11 ` David Crocker
2001-11-07 18:59 ` tmoran
2001-11-08 11:38 ` David Crocker
2001-11-10 18:03 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox