comp.lang.ada
 help / color / mirror / Atom feed
From: Jere <jhb.chat@gmail.com>
Subject: Re: Full view of a private partial view cannot be a subtype
Date: Sun, 3 Dec 2017 14:23:03 -0800 (PST)
Date: 2017-12-03T14:23:03-08:00	[thread overview]
Message-ID: <dd1b71a7-9bfb-4f7c-8109-bb06f54505b4@googlegroups.com> (raw)
In-Reply-To: <p01229$hqn$1@dont-email.me>

On Sunday, December 3, 2017 at 9:34:51 AM UTC-5, Jeffrey R. Carter wrote:
> On 12/03/2017 02:33 PM, Jere wrote:
> > Thanks!  I didn't even think about nesting it like that.  That'll work.
> 
> Many people seem to think that as much as possible should be done through type 
> extension. They act as though the only tool they have is the hammer of type 
> extension, and so view every problem as a nail. In my experience type extension 
> is usually best avoided whenever possible.
> 

Well, I think either form is a bit too polar.  I've always been taught that
you use the tool that makes the most sense given the context.  If a type
has an "is a" relationship, you favor extension.  But if it has a "has a"
relationship, you favor composition.  If the situation is unique enough,
then you do something outside the norm.

In this case I wasn't using extension because I thought it was the best
method.  I was using it because Ada doesn't provide me a good way to
rename a type as part of the full view.  Normally I would use subtype, 
but I can't do that with a private declaration (I don't want the client
to have access to the "subtypedness", but I want to leverage it under
the hood).  Extension was my first stab at it because of the natural
flow of type declarations in Ada.

I did run into a snag with using composition.  Some of my functions
return numeric or access types that are created within the generic
that I am trying to use.  I'll still have to do conversions for those
since I want them to retain their numeric and access properties (so
a private nested type won't do).

  parent reply	other threads:[~2017-12-03 22:23 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-03  2:14 Full view of a private partial view cannot be a subtype Jere
2017-12-03 12:01 ` Jeffrey R. Carter
2017-12-03 13:33   ` Jere
2017-12-03 14:34     ` Jeffrey R. Carter
2017-12-03 17:44       ` Robert Eachus
2017-12-03 18:50         ` Simon Wright
2017-12-03 22:10           ` Robert Eachus
2017-12-03 19:03         ` Jeffrey R. Carter
2017-12-03 22:23       ` Jere [this message]
2017-12-04  8:25         ` Dmitry A. Kazakov
2017-12-04 18:04         ` Jeffrey R. Carter
2017-12-04 20:41           ` Jere
2017-12-04 21:48             ` Jeffrey R. Carter
2017-12-05  8:20               ` Dmitry A. Kazakov
2017-12-05 18:16                 ` Jeffrey R. Carter
2017-12-05 20:39                   ` Dmitry A. Kazakov
2017-12-05 21:38                     ` Jeffrey R. Carter
2017-12-05 12:35               ` Jere
2017-12-05 18:40                 ` Jeffrey R. Carter
2017-12-06 12:54                   ` Jere
2017-12-06 18:03                     ` Jeffrey R. Carter
2017-12-05 20:22                 ` Randy Brukardt
2017-12-05 15:27               ` Shark8
2017-12-05 18:50                 ` Jeffrey R. Carter
2017-12-05 20:59                 ` Randy Brukardt
2017-12-05 22:43                   ` Shark8
2017-12-07  0:52                     ` Randy Brukardt
2017-12-05 20:16               ` Randy Brukardt
2017-12-05 21:29                 ` Jeffrey R. Carter
2017-12-07  0:04                   ` Randy Brukardt
2017-12-04 20:49 ` Randy Brukardt
2017-12-05 12:56   ` Jere
2017-12-05 20:12     ` Randy Brukardt
2017-12-17 15:26       ` Jere
2017-12-17 15:39         ` Dmitry A. Kazakov
2017-12-18 22:47           ` Randy Brukardt
2017-12-19  1:22             ` Jere
2017-12-19 23:16               ` Randy Brukardt
2017-12-19  1:01           ` Jere
2017-12-19  9:08             ` Dmitry A. Kazakov
2017-12-19 13:08               ` Jere
2017-12-19 13:27                 ` Dmitry A. Kazakov
2017-12-19 19:10             ` Stephen Leake
2017-12-18 20:45 ` Stephen Leake
2017-12-18 22:54   ` Randy Brukardt
2017-12-19  1:08   ` Jere
replies disabled

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