comp.lang.ada
 help / color / mirror / Atom feed
From: "Samuel T. Harris" <sam_harris@hso.link.com>
Subject: Re: private type discriminants ignored?
Date: 1998/04/28
Date: 1998-04-28T00:00:00+00:00	[thread overview]
Message-ID: <35468F93.C371940@hso.link.com> (raw)
In-Reply-To: 354612AF.41C6@hso.link.com


Patrick D. Rogers wrote:
> 
> Samuel T. Harris wrote:
> >
> > Robert A Duff wrote:
> > >
> > > In article <rz84szje1ol.fsf@cs.williams.edu>,
> > > Jay Sachs  <sachs@cs.williams.edu> wrote:
> > > >       type Stack(Size : Integer := 100) is private;
> > >
> > > >...  What is the reason that the default initialization
> > > >seems to be ignored in the discriminant for the private type?
> > >
> > > The default isn't being ignored; Size is being correctly initialized to
> > > 100.  However, the mere presence of a default means that the
> > > discriminant can change.  That's confusing, and is a language design
> > > flaw, IMHO.  There should have been a separate keyword or some other
> > > separate syntax to mean "the discrim might change".  But as it is in
> > > Ada, an unconstrained variable of type Stack can later have a discrim of
> > > Integer'Last, even though it defaults initially to 100.  And many
> > > compilers take the (quite reasonable) attitude that implicit heap
> > > allocation is evil, so they allocate the maximum possible size for these
> > > things.  And in this case, that's enormous, and will typically raise
> > > Storage_Error; hence the warning.
> >
> > Not entirely accurate. The mere presense of the default value does
> > not mean the discriminant can change. It depends on how objects
> > are declared.
> 
> Sam,
> 
> Since we are in pedantic mode, :) Bob said "... unconstrained variable
> ...", so he is indeed entirely accurate.
> 
> :)
> 
> --pat
> 
> Patrick Rogers

To one-up the pedantic theme :) Bob's "... unconstrained variable"
appears several lines after "a default means that the discriminant
can change". Perhaps I should have said "Not entirely complete."

Bob covers unconstrained variables exclusively.
I simply sought to cover constrained variables and complete the picture.

The subtle differences are lost on many of our (my company's)
Ada initiates and I have spent some time explaining the nuances
of this construction, especially as applied to polymorphic variant
records.

Now, how's that for a recovery ;)

-- 
Samuel T. Harris, Principal Engineer
Raytheon Training Incorporated
"If you can make it, We can fake it!"




  reply	other threads:[~1998-04-28  0:00 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Es7569.4n2@world.std.com>
1998-04-24  0:00 ` private type discriminants ignored? Jay Sachs
1998-04-24  0:00   ` Joel VanLaven
     [not found]   ` <Es3A4J.Ion@world.std.com>
1998-04-28  0:00     ` Samuel T. Harris
1998-04-28  0:00       ` Patrick D. Rogers
1998-04-28  0:00         ` Samuel T. Harris [this message]
1998-04-30  0:00   ` Anonymous
     [not found]     ` <6ib6t4$63f$1@goanna.cs.rmit.edu.au>
1998-05-06  0:00       ` Robert I. Eachus
1998-05-01  0:00 ` Samuel T. Harris
     [not found] <matthew_heaney-ya023680003004981720560001@news.ni.net>
1998-05-01  0:00 ` Anonymous
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox