comp.lang.ada
 help / color / mirror / Atom feed
From: "Matthew Heaney" <mheaney@on2.com>
Subject: Re: Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl)
Date: Mon, 27 Sep 2004 12:21:15 -0400
Date: 2004-09-27T16:09:48+00:00	[thread overview]
Message-ID: <41583b4c$0$74190$39cecf19@news.twtelecom.net> (raw)
In-Reply-To: e749549b.0409270631.2bf81ccf@posting.google.com


"Kevin Cline" <kevin.cline@gmail.com> wrote in message
news:e749549b.0409270631.2bf81ccf@posting.google.com...
> Matthew Heaney <matthewjheaney@earthlink.net> wrote in message
news:<uekkpt07s.fsf@earthlink.net>...
> > kevin.cline@gmail.com (Kevin Cline) writes:
> >
> > Indeed, you cannot do this.  In AI-302 (and in Ada.Strings.*), you have
to say:
> >
> >    Replace_Element (C, Index => 5, By => 7);
>
> I think this was a major error in the language design.  As a result it
> very tedious to write a generic that will work with both predefined
> and user-defined types.

All you need to do is write the generic in terms of (AI-302) container
operations, and then use locally declared subprograms to make the array
(say) work with the generic algorithm.  The "tedium" only applies when using
a generic on an array instead of a container.

For example:

generic
   type Cursor is private;
   with function Next (C : Cursor) return Cursor is <>;
   with procedure Replace_Element (C : Cursor; By : ET) is <>;
   with function Has_Element (C : Cursor) return Boolean is <>;
procedure Generic_Op (C : Cursor);

To use this with a container type, there's nothing you need to do except
instantiate the generic algorithm.

To make this work with an array, all you need to do is:

procedure Op (A : in out Array_Type) is

   procedure Replace_Element (I : Index_Type; E : ET) is
  begin
     A (I) := E;
  end;

  function Has_Element (I : IT) return Boolean is
  begin
     return I in A'Range;
  end;

  procedure Algorithm is
    new Generic_Algorithm (Index_Type, Index_Type'Succ);

begin
   Algorithm (A'First);
end Op;

Note that here the "cursor" is just the discrete array index subtype.  The
T'Succ attribute is used as the generic actual for the Next generic formal.

Your problem is that you're still thinking in C++ terms.  C++ works by
making containers look like built-in types.  That's different from Ada,
which (as demonstrated above) makes the built-in type look like a container.


-Matt





  parent reply	other threads:[~2004-09-27 16:21 UTC|newest]

Thread overview: 229+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-22  0:21 Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl) Kevin Cline
2004-09-22  2:16 ` Pylinius
2004-09-22  8:50 ` Björn Persson
2004-09-22 13:38   ` Benjamin Ketcham
2004-09-22 14:07     ` Hyman Rosen
2004-09-22 15:16     ` Cesar Rabak
2004-09-23  8:22     ` Kevin Cline
2004-09-23 10:52     ` Anders Wirzenius
2004-09-23 10:54       ` stephane richard
2004-09-23 11:17       ` Jean-Pierre Rosen
2004-09-23 11:47       ` Marius Amado Alves
2004-09-23 13:34         ` Anders Wirzenius
2004-09-23 16:53           ` Warren W. Gay VE3WWG
2004-09-23 18:30           ` Kevin Cline
2004-09-23 19:00             ` Marius Amado Alves
2004-09-24  6:04               ` [OT]Screen ergonomics, was " Anders Wirzenius
2004-09-26  7:22               ` Kevin Cline
2004-09-23 17:19         ` Cesar Rabak
2004-09-23  8:51   ` Kevin Cline
2004-09-23 11:01     ` Georg Bauhaus
2004-09-23 15:59       ` Matthew Heaney
2004-09-23 16:38       ` Kevin Cline
2004-09-24  2:47         ` Matthew Heaney
2004-09-24 13:43           ` Hyman Rosen
2004-09-24 17:47             ` Mark Lorenzen
2004-09-24 18:16               ` Matthew Heaney
2004-09-29 19:29                 ` Mark Lorenzen
2004-09-29 22:44                   ` Matthew Heaney
2004-09-25 14:09             ` Martin Krischik
2004-09-26  7:08           ` Kevin Cline
2004-09-26 15:13             ` Matthew Heaney
2004-09-23 19:10     ` jayessay
2004-09-23 21:13       ` Adam Ruth
2004-09-27  2:12         ` Keith H Duggar
2004-09-27 14:21           ` Adam Ruth
2004-09-27 14:51             ` Chris Humphries
2004-09-27 17:10               ` Adam Ruth
2004-09-27 20:16               ` Keith H Duggar
2004-09-27 21:15                 ` Chris Humphries
2004-09-28  4:46                   ` Keith H Duggar
2004-09-27 20:34             ` Kevin Cline
2004-09-27 21:15               ` Adam Ruth
2004-09-23 23:05     ` Brian May
2004-09-24  3:06       ` Matthew Heaney
2004-09-24  3:52       ` Randy Brukardt
2004-09-24  5:15         ` Matthew Heaney
2004-09-24 19:12         ` Kevin Cline
2004-09-24 20:54           ` Randy Brukardt
2004-09-24 21:23             ` Matthew Heaney
2004-09-27 13:22           ` Chris Humphries
2004-09-27 13:45             ` Chris Humphries
2004-09-27 21:31             ` Kevin Cline
2004-09-27 23:51               ` Brian May
2004-09-28 12:21               ` Chris Humphries
2004-09-26 17:10         ` jayessay
2004-09-26 20:00           ` Georg Bauhaus
2004-09-27 14:45             ` jayessay
2004-09-24  0:19     ` Stephen Leake
2004-09-24 14:54       ` Cesar Rabak
2004-09-22 15:27 ` James Alan Farrell
2004-09-22 21:24   ` Simon Wright
2004-09-23  0:03     ` Brian May
2004-09-23  9:17       ` Kevin Cline
2004-09-23  0:44     ` Jeffrey Carter
2004-09-23 11:08       ` Georg Bauhaus
2004-09-23  8:15     ` Martin Krischik
2004-09-23 16:20       ` Matthew Heaney
2004-09-23 19:23         ` Simon Wright
2004-09-24  7:19         ` Martin Krischik
2004-09-24 16:31           ` Matthew Heaney
2004-09-24 19:24           ` Kevin Cline
2004-09-25 14:04             ` Martin Krischik
2004-09-26 10:36               ` Robert Kawulak
2004-09-26 15:35                 ` Martin Krischik
2004-09-28 17:46                   ` Robert Kawulak
2004-09-29  7:49                     ` Martin Krischik
2004-09-29 12:01                       ` Xenos
2004-09-29 18:16                       ` Robert Kawulak
2004-09-30 15:55                         ` Martin Krischik
2004-09-27 22:22               ` Kevin Cline
2004-09-28  7:51                 ` Martin Krischik
2004-09-29  3:04                   ` Kevin Cline
2004-09-29  6:03                     ` Dale Stanbrough
2004-09-29 13:31                     ` Georg Bauhaus
2004-09-29 13:46                     ` Matthew Heaney
2004-09-30  3:42                       ` Kevin Cline
2004-09-30  7:54                         ` Dale Stanbrough
2004-09-30 16:50                         ` Matthew Heaney
2004-10-01  0:04                           ` Kevin Cline
2004-10-01 12:25                             ` Georg Bauhaus
2004-10-02  7:35                               ` K
2004-10-02 10:00                                 ` Brian May
2004-10-02 20:39                                   ` Kevin Cline
2004-10-03  2:17                                     ` Brian May
2004-10-02 13:40                                 ` Matthew Heaney
2004-10-02 23:33                                 ` Randy Brukardt
2004-10-03 12:47                                   ` Stephen Leake
2004-09-30 19:01                         ` Björn Persson
2004-09-30 23:54                           ` Kevin Cline
2004-10-01 16:11                             ` Björn Persson
2004-10-02  6:48                               ` K
2004-10-02 10:41                                 ` Björn Persson
2004-10-02 13:32                                 ` Matthew Heaney
2004-10-04  9:02                                 ` Ole-Hjalmar Kristensen
2004-09-23  9:00   ` Kevin Cline
2004-09-23 11:27     ` Ole-Hjalmar Kristensen
2004-09-23 19:11       ` Kevin Cline
2004-09-23 21:01         ` Alexander E. Kopilovich
2004-09-26  6:53           ` Kevin Cline
2004-09-26 15:29             ` Alexander E. Kopilovich
2004-09-23 21:54         ` Eric Jacoboni
2004-09-24  9:44         ` Ole-Hjalmar Kristensen
2004-09-24  9:50         ` Georg Bauhaus
2004-09-24 13:47           ` Matthew Heaney
2004-09-24 14:14             ` Dmitry A. Kazakov
2004-09-25 14:17               ` Martin Krischik
2004-09-27  8:12                 ` Dmitry A. Kazakov
2004-09-27 12:59                   ` Georg Bauhaus
2004-09-27 13:53                     ` Dmitry A. Kazakov
2004-09-26  7:17               ` Kevin Cline
2004-09-27  8:19                 ` Dmitry A. Kazakov
2004-09-27 13:03                   ` Georg Bauhaus
2004-09-27 14:00                     ` Dmitry A. Kazakov
2004-09-24 16:28           ` Kevin Cline
2004-09-24 17:45             ` Georg Bauhaus
2004-09-24 20:14             ` Matthew Heaney
2004-09-24 20:10               ` Frank J. Lhota
2004-09-27  8:29                 ` Dmitry A. Kazakov
2004-09-26  7:13               ` Kevin Cline
2004-09-26 15:15                 ` Matthew Heaney
2004-09-27 14:31                   ` Kevin Cline
2004-09-27 15:05                     ` Dmitry A. Kazakov
2004-09-28  4:22                       ` Kevin Cline
2004-09-28  8:20                         ` Dmitry A. Kazakov
2004-09-28 23:26                           ` Robert Kawulak
2004-09-29 12:19                             ` Dmitry A. Kazakov
2004-09-30 18:52                               ` Robert Kawulak
2004-10-01  7:55                                 ` Dmitry A. Kazakov
2004-10-03 19:35                                   ` Robert Kawulak
2004-10-04 10:24                                     ` Dmitry A. Kazakov
2004-10-06 17:28                                       ` Robert Kawulak
2004-10-07  8:24                                         ` Dmitry A. Kazakov
2004-10-10 21:09                                           ` Robert Kawulak
2004-10-11  8:08                                             ` Dmitry A. Kazakov
2004-10-15  9:34                                               ` Robert Kawulak
2004-10-15 16:58                                                 ` Martin Krischik
2004-09-29 15:44                             ` Matthew Heaney
2004-09-30 18:27                               ` Robert Kawulak
2004-09-28 17:21                       ` Robert Kawulak
2004-09-29  1:38                         ` Georg Bauhaus
2004-09-29 18:08                           ` Robert Kawulak
2004-09-30 18:30                             ` Georg Bauhaus
2004-09-29  8:08                         ` Dmitry A. Kazakov
2004-09-29 18:11                           ` Robert Kawulak
2004-09-30  8:57                             ` Dmitry A. Kazakov
     [not found]                               ` <cji06f$17a$2@atlantis.news.tpi.pl>
2004-10-01  8:58                                 ` Dmitry A. Kazakov
2004-10-03 19:53                                   ` Robert Kawulak
2004-10-04 10:15                                     ` Dmitry A. Kazakov
2004-10-04 12:16                                       ` Matthew Heaney
2004-10-04 13:21                                         ` Dmitry A. Kazakov
2004-10-06 17:20                                       ` Robert Kawulak
2004-10-07 10:08                                         ` Dmitry A. Kazakov
2004-10-10 22:21                                           ` Robert Kawulak
2004-10-11  8:46                                             ` Dmitry A. Kazakov
2004-10-15  9:25                                               ` Robert Kawulak
2004-10-15 11:56                                                 ` Dmitry A. Kazakov
2004-10-20 20:06                                                   ` Robert Kawulak
2004-10-21  2:51                                                     ` Kevin Cline
2004-10-21  8:39                                                     ` Dmitry A. Kazakov
2004-10-27 21:41                                                       ` Robert Kawulak
2004-10-01 13:02                                 ` Robert Kawulak
2004-10-28 10:26                                 ` Larry Kilgallen
2004-09-27 16:21                     ` Matthew Heaney [this message]
2004-09-28  2:47                       ` Kevin Cline
2004-09-28  4:03                         ` Brian May
2004-09-28  4:46                         ` Matthew Heaney
2004-09-29  3:14                           ` Kevin Cline
2004-09-29  3:50                             ` Matthew Heaney
2004-09-29  3:52                               ` Matthew Heaney
2004-09-29 13:44                             ` Matthew Heaney
2004-09-26  6:32           ` Kevin Cline
2004-09-26 15:05             ` Matthew Heaney
2004-09-27 14:35               ` Kevin Cline
2004-09-23 19:30       ` jayessay
2004-09-23 19:42     ` Alexander E. Kopilovich
2004-09-22 21:05 ` Georg Bauhaus
2004-09-23  9:20   ` Kevin Cline
2004-09-23 16:58     ` Warren W. Gay VE3WWG
2004-09-23  6:24 ` Matthew Heaney
2004-09-23 11:23   ` Jeff C r e e.m
2004-09-23 11:35     ` Georg Bauhaus
2004-09-23 17:05       ` Pascal Obry
2004-09-23 17:07       ` Pascal Obry
2004-09-23 18:30     ` Matthew Heaney
2004-09-23 19:31       ` Simon Wright
2004-09-24  0:09         ` Stephen Leake
2004-09-25 10:41           ` Simon Wright
2004-09-23 18:24   ` Kevin Cline
2004-09-23 17:12 ` Dan Andreatta
2004-09-23 18:10   ` Pascal Obry
2004-09-23 19:21     ` Eric Jacoboni
2004-09-23 19:31       ` Ed Falis
2004-09-23 19:37         ` Eric Jacoboni
2004-09-24 20:09       ` Kevin Cline
2004-09-25  0:18         ` Eric Jacoboni
2004-09-26  6:37           ` Kevin Cline
2004-09-26 14:57             ` Matthew Heaney
2004-09-23 19:24     ` Eric Jacoboni
2004-09-23 21:30       ` Eric Jacoboni
2004-09-26 11:44         ` Jacob Sparre Andersen
2004-09-26 17:02         ` jayessay
2004-09-24  8:26       ` Ole-Hjalmar Kristensen
2004-09-23 22:08     ` Anders Gidenstam
2004-09-24  8:10     ` Ole-Hjalmar Kristensen
2004-09-24 17:43       ` Dan Andreatta
2004-09-24 17:40     ` Dan Andreatta
2004-09-24 18:50       ` Pascal Obry
2004-09-23 22:34 ` Randy Brukardt
2004-09-23 23:11   ` Dale Stanbrough
2004-09-24  1:57     ` Matthew Heaney
2004-09-24  6:32       ` Dale Stanbrough
2004-09-24 21:01         ` Randy Brukardt
2004-09-24  0:43   ` Jeffrey Carter
2004-09-24  1:51   ` Matthew Heaney
2004-09-24 20:21     ` Kevin Cline
2004-09-26 11:09 ` Jacob Sparre Andersen
2004-09-27 13:49   ` Björn Persson
2004-10-12  5:21 ` Ada Popularity: Comparison of languages Brian May
2004-10-12 11:43   ` Peter Hermann
replies disabled

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