From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A few questions
Date: Fri, 13 Nov 2015 21:37:52 +0100
Date: 2015-11-13T21:37:52+01:00 [thread overview]
Message-ID: <1705bpj6jrld0.1lc44o5yo6bj7$.dlg@40tude.net> (raw)
In-Reply-To: n2580u$hf5$1@loke.gir.dk
On Fri, 13 Nov 2015 11:52:29 -0600, Randy Brukardt wrote:
> "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.
Yes, because Ada always had this syntax for iterating elements of a set. It
is:
for I in A'Range loop
It is not
for I in A loop
If the later were legal then loop parameter must have been a pair (Index,
Element), because that is what an array is: a set of pairs.
[ "of" is rubbish of course. It is "in" that iterates / enumerates a set.
If "of" should ever be used then for something else. ]
> And if you did that, there is
> no problem implementing this in the existing Ada, even as you suggest.
I am not sure about that.
>> 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.
Array does not contain "cursors." Cursor is an evil idea, but that is
unrelated to the issue of iteration over a general set.
>>> 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.
Why do I need extra data types, bad types as they involve pointers?
>>> 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).
Maybe yes, maybe no. But cursor is neither index nor element. Cursor is
same as a pointer.
> 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.
No way. The bag is a set that only supports insertion and iteration.
Nothing more. It is very useful, e.g. to hold strong references to
allocated data. References are thrown into a bag. At some point the bag is
iterated and all references invalidated releasing resources.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2015-11-13 20:37 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
2015-11-13 20:37 ` Dmitry A. Kazakov [this message]
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