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.
next prev parent 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