comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: A few questions
Date: Fri, 13 Nov 2015 11:52:29 -0600
Date: 2015-11-13T11:52:29-06:00	[thread overview]
Message-ID: <n2580u$hf5$1@loke.gir.dk> (raw)
In-Reply-To: 1dolqizyi8gxi.t3173bhifuu1.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:1dolqizyi8gxi.t3173bhifuu1.dlg@40tude.net...
> On Thu, 12 Nov 2015 15:15:45 -0600, Randy Brukardt wrote:
...
>> Surely it is not the same. But why do we need the first?
>
> For doing this:
>
>   for Line in Read (Text_File) loop
>       ...
>   end loop;

Note that you used "in" rather than "of" here. And if you did that, there is 
no problem implementing this in the existing Ada, even as you suggest.

...
> Operation Read provides an iterateable container-view of Text_File. There
> cannot be any index, because the "buffer" will contain just single line.

A "cursor" is not necessarily an array index, as I pointed out earlier in 
this thread. For anything "on demand", the cursor probably ought to be the 
data itself. (You'd probably have to use an unbounded string for that, but 
that's a different problem unrelated to iteration.)

...
>> An array is surely
>> a container, and we got along just fine for 30 years without being able 
>> to
>> iterate elements of arrays.
>
> Not every container is an array. There are lots of containers which
> semantically have no index.

Then provide an iterator implementation where the cursor is an access to the 
element.

...
>> There is always *something* that works as an index. If there isn't, you
>> can't iterate (because you can't figure out a reproducible order for 
>> which
>> item is next).
>
> First, index is more than iteration. Index assumes random access and an
> ability to access any number of times. Iteration requires only sequential
> access and only visit once. If you equate both, you either burden the
> implementation with unnecessary functionality or the clients in order to
> catch unsupported actions. Not good.

You are giving more properties than necessary to an iteration cursor (which 
is what we are talking about). There is absolutely no problem with it 
providing sequential one-time access. You have to program it that way, of 
course, but it's not hard to do (see the implementation in the ACATS, for 
one example).

I might have confused you by calling it an "index", because it's clear that 
you're assigning properties to it that I am not. There's no reason that you 
have to use a for loop parameter as an index! (I often write traditional 
loops where the loop parameter is not an index.)

> Secondly, it is an implementation driven view. The problem space may have
> no index even when the implementation could have one. Exposing
> implementation details is bad.

That's the Bag arrgument again. I think that particular data structure is a 
fraud, because it cannot be created in practice -- plus you have to have 
some sort of access to the elements, so you end up with a cursor of some 
sort anyway. There's a reason there is no Bag in the Ada.Containers library!

              Randy.


  reply	other threads:[~2015-11-13 17:52 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-31 20:29 A few questions Laurent
2015-10-31 20:49 ` Dmitry A. Kazakov
2015-11-01 13:16   ` Laurent
2015-11-01  0:25 ` Jeffrey R. Carter
2015-11-01 13:30   ` Laurent
2015-11-03  6:25   ` Randy Brukardt
2015-11-01  9:05 ` Jacob Sparre Andersen
2015-11-01 13:40   ` Laurent
2015-11-01 18:14     ` Jacob Sparre Andersen
2015-11-01 18:40       ` Laurent
2015-11-01 13:42 ` brbarkstrom
2015-11-01 13:52   ` Laurent
2015-11-01 17:59     ` Jeffrey R. Carter
2015-11-01 18:35       ` Laurent
2015-11-02 13:25     ` brbarkstrom
2015-11-01 15:15   ` Dennis Lee Bieber
2015-11-01 16:33 ` gautier_niouzes
2015-11-01 16:36   ` gautier_niouzes
2015-11-01 18:17 ` Stephen Leake
2015-11-01 18:53   ` Laurent
2015-11-02  0:41     ` Dennis Lee Bieber
2015-11-02 16:42     ` Stephen Leake
2015-11-02 17:45 ` Simon Wright
2015-11-02 18:48   ` Simon Wright
2015-11-03  6:33     ` Randy Brukardt
2015-11-03  8:26       ` Simon Wright
2015-11-03  6:40   ` Randy Brukardt
2015-11-03  8:34     ` Simon Wright
2015-11-04 16:19       ` Simon Wright
2015-11-05  1:20         ` Randy Brukardt
2015-11-05  8:34           ` briot.emmanuel
2015-11-12 18:28             ` Randy Brukardt
2015-11-12 20:19               ` Simon Wright
2015-11-12 20:56               ` Dmitry A. Kazakov
2015-11-12 21:15                 ` Randy Brukardt
2015-11-13  8:40                   ` Dmitry A. Kazakov
2015-11-13 17:52                     ` Randy Brukardt [this message]
2015-11-13 20:37                       ` Dmitry A. Kazakov
2015-11-13 22:15                         ` Randy Brukardt
2015-11-14 11:42                           ` Dmitry A. Kazakov
2015-11-14 12:37                           ` Simon Wright
2015-11-14 17:24                             ` Shark8
2015-11-14 20:09                               ` Simon Wright
2015-11-15 18:54                             ` Brad Moore
2015-11-13  8:45               ` briot.emmanuel
2015-11-13 17:41                 ` Randy Brukardt
2015-11-14 19:57                   ` briot.emmanuel
2015-11-16 19:13                     ` Randy Brukardt
2015-11-16 20:47                       ` Dmitry A. Kazakov
2015-11-17 21:30                         ` Randy Brukardt
2015-11-18  9:53                           ` Dmitry A. Kazakov
2015-11-18 22:27                             ` Randy Brukardt
2015-11-19  8:52                               ` Dmitry A. Kazakov
2015-11-19 21:15                                 ` Randy Brukardt
2015-11-16 21:50                       ` Simon Wright
2015-11-17 21:33                         ` Randy Brukardt
2015-11-17 23:14                           ` Simon Wright
2015-11-17  8:49                       ` briot.emmanuel
2015-11-17 22:09                         ` Randy Brukardt
2015-11-05  8:45           ` Simon Wright
2015-11-05  8:52             ` Simon Wright
2015-11-12 18:29               ` Randy Brukardt
2015-11-12 18:32               ` Randy Brukardt
2015-11-12 20:02                 ` Simon Wright
2015-11-12 21:08                   ` Randy Brukardt
2015-11-15 17:56                     ` Brad Moore
2015-11-15 21:42                       ` Simon Wright
2015-11-16 19:16                       ` Randy Brukardt
  -- strict thread matches above, loose matches on Subject: below --
2015-02-07 17:43 Laurent
2015-02-07 22:15 ` Brad Moore
2015-02-08 22:37   ` Laurent
2015-02-09 13:56     ` Brad Moore
2015-02-09 18:36       ` Laurent
replies disabled

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