comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: The "()" operator revisited.
Date: Thu, 15 Jan 2004 09:50:16 +0100
Date: 2004-01-15T09:50:16+01:00	[thread overview]
Message-ID: <9ojc00dr0nehitt23o7adh43sc7acujio0@4ax.com> (raw)
In-Reply-To: bu4puc$l4p$2@a1-hrz.uni-duisburg.de

On Thu, 15 Jan 2004 01:21:16 +0000 (UTC), Georg Bauhaus
<sb463ba@l1-hrz.uni-duisburg.de> wrote:

>Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>: 
>: Templates are for generic programming. I would like to do generic
>: programming in terms class-wide subroutines and discriminated types.
>
>Hm. How do you know then that you get an Apple from some Set, and
>not an Orange? Is there a run time penalty?

Which one? Templates do it at compile time anyway, so the type tags
are statically known. The issue is whether tags and tag checks could
be optimized out. This is why I do not like Ada functions, and want to
have them pure. It should be possible to *require* a function
evaluation at compile time.

However, for specialized arrays three things atually required:

1. array discriminants
2. viewing type tag as a discriminant of a class-wide
3. placing tags and discriminants separately from the object body when
known (same as with array bounds)

Having these things one could just write:

type Fruit is ...;
type Fruit_Array (Kind_Of : Tag) is
   array (...) of Fruit'Class (Kind_Of);

If you have Apples and Oranges, then:

type Apple is new Fruit with ...;
subtype Apple_Array is Fruit_Array (Apple'Tag);

type Orange is new Fruit with ...;
subtype Orange_Array is Fruit_Array (Orange'Tag);

--
Regards,
Dmitry A. Kazakov
www.dmitry-kazakov.de



  reply	other threads:[~2004-01-15  8:50 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-13 17:53 The "()" operator revisited amado.alves
2004-01-14  9:09 ` Dmitry A. Kazakov
2004-01-14 12:55   ` Georg Bauhaus
2004-01-14 15:05     ` Dmitry A. Kazakov
2004-01-15  1:21       ` Georg Bauhaus
2004-01-15  8:50         ` Dmitry A. Kazakov [this message]
2004-01-15 11:09           ` Georg Bauhaus
2004-01-15 13:23             ` Dmitry A. Kazakov
2004-01-17  6:26               ` Robert I. Eachus
2004-01-14 13:04   ` Hyman Rosen
  -- strict thread matches above, loose matches on Subject: below --
2004-01-14 15:22 amado.alves
2004-01-14 16:16 ` Dmitry A. Kazakov
2004-01-13 17:46 amado.alves
2004-01-13 22:21 ` Randy Brukardt
2004-01-12 17:53 Frank J. Lhota
2004-01-12 18:38 ` Frank J. Lhota
2004-01-12 22:26 ` Robert A Duff
2004-01-13 16:29   ` Frank J. Lhota
2004-01-13  9:24 ` Dmitry A. Kazakov
2004-01-13 16:44   ` Frank J. Lhota
2004-01-13 17:13     ` Hyman Rosen
2004-01-13 22:27     ` Randy Brukardt
2004-01-14  2:30     ` Stephen Leake
2004-01-14  9:04     ` Dmitry A. Kazakov
2004-01-17  0:15       ` Kenneth Almquist
2004-01-17 21:15         ` Robert A Duff
2004-01-19 10:25         ` Dmitry A. Kazakov
2004-01-13 13:13 ` Marin David Condic
2004-01-13 17:38   ` Warren W. Gay VE3WWG
2004-01-13 19:09     ` Robert A Duff
2004-01-15 17:30       ` Warren W. Gay VE3WWG
2004-01-15 18:11         ` Robert A Duff
2004-01-15 19:36           ` tmoran
2004-01-15 20:35             ` Robert A Duff
2004-01-17  5:48               ` Robert I. Eachus
2004-01-16  3:11           ` Mark A. Biggar
2004-01-16 13:28             ` Hyman Rosen
2004-01-16 16:19             ` Robert A Duff
2004-01-16 18:09             ` Warren W. Gay VE3WWG
2004-01-16 13:56           ` Frank J. Lhota
2004-01-16 16:14             ` Robert A Duff
2004-01-16 21:29               ` Frank J. Lhota
replies disabled

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