From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: class wide iterable (and indexable)
Date: Wed, 23 Jan 2019 09:14:16 +0100
Date: 2019-01-23T09:14:16+01:00 [thread overview]
Message-ID: <q297on$t52$1@gioia.aioe.org> (raw)
In-Reply-To: q283pj$6t3$1@franka.jacob-sparre.dk
On 2019-01-22 23:00, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:q26lsh$1ee3$1@gioia.aioe.org...
>> On 2019-01-22 00:15, Randy Brukardt wrote:
>>> For instance, in a Vector, the
>>> lower bound is fixed for all values of a particular type. That would
>>> eliminate a lot of programming errors that happen in Ada programs (many
>>> programs fail to deal with unusual lower bounds, because it's hard to get
>>> right).
>>
>> I disagree. It would make array slices more difficult to use.
>
> Array slices as defined in Ada aren't worth the substantial implementation
> complexity. I would replace them by slicing functions, and the bounds are
> lost.
The reverse. A container without slices is half useless to me. BTW, nD
arrays must support slicing, subarrays, subplanes etc.
>> Presently we can do things like
>>
>> Read (Buffer (From..To), Last);
>
> Surely. But "Last" is a weird Ada-ism that exists solely because array
> bounds are so generally accessible. It is much more natural (and sensible
> for most uses) to return the count of characters read.
No, because it is a break of the abstraction, unsafe and error-prone.
>> Foo can move the index Last and this is the same index as outside in the
>> caller because indices do not slide. If you make the lower bound fixed,
>> indices would slide and that would require a lot of index arithmetic upon
>> calling subprograms on slices. This would be far more error-prone than
>> occasionally forgetting to use Buffer'First instead of 1.
>
> True, in the rare case where that matters. But most of the time, one has to
> do that math to convert "Last" into a number of character read. So this is a
> wash to me - some things are easier, som things are harder. (Again, "Last"
> is an odd Ada-ism, specs would return a character count, not some array
> index.)
You want to get rid of indices and have only positions. Positions is not
a substitute to indices. With multiple interfaces there would be no
problem to have a positional view on the array. Which is not an array
interface anymore. It would be an interface of a tuple. Ada does not
have builtoin tuples, but it could have them. Just do not force
everything into it.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2019-01-23 8:14 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-02 15:48 class wide iterable (and indexable) George Shapovalov
2019-01-02 17:39 ` Simon Wright
2019-01-02 18:11 ` George Shapovalov
2019-01-03 8:52 ` Simon Wright
2019-01-03 9:30 ` George Shapovalov
2019-01-03 16:45 ` Jeffrey R. Carter
2019-01-04 4:32 ` Shark8
2019-01-05 9:03 ` Randy Brukardt
2019-01-03 22:56 ` Randy Brukardt
2019-01-04 0:00 ` George Shapovalov
2019-01-04 8:43 ` Dmitry A. Kazakov
2019-01-04 12:20 ` George Shapovalov
2019-01-05 23:29 ` Jere
2019-01-05 23:50 ` Jere
2019-01-06 9:34 ` George Shapovalov
2019-01-06 10:19 ` Dmitry A. Kazakov
2019-01-06 11:30 ` George Shapovalov
2019-01-06 12:45 ` Dmitry A. Kazakov
2019-01-06 13:18 ` George Shapovalov
2019-01-06 14:13 ` Dmitry A. Kazakov
2019-01-06 16:33 ` George Shapovalov
2019-01-06 18:29 ` George Shapovalov
2019-01-06 20:32 ` Dmitry A. Kazakov
2019-01-06 21:47 ` George Shapovalov
2019-01-07 9:37 ` Niklas Holsti
2019-01-07 16:24 ` George Shapovalov
2019-01-06 20:18 ` Dmitry A. Kazakov
2019-01-06 21:58 ` George Shapovalov
2019-01-07 8:28 ` Dmitry A. Kazakov
2019-01-05 9:21 ` Randy Brukardt
2019-01-05 10:07 ` Dmitry A. Kazakov
2019-01-05 18:17 ` George Shapovalov
2019-01-05 20:07 ` Simon Wright
2019-01-05 20:41 ` George Shapovalov
2019-01-07 21:07 ` Randy Brukardt
2019-01-08 9:51 ` Dmitry A. Kazakov
2019-01-08 19:25 ` Björn Lundin
2019-01-08 23:26 ` Randy Brukardt
2019-01-09 17:06 ` Dmitry A. Kazakov
2019-01-09 23:38 ` Randy Brukardt
2019-01-10 8:53 ` Dmitry A. Kazakov
2019-01-10 22:14 ` Randy Brukardt
2019-01-11 9:09 ` Dmitry A. Kazakov
2019-01-14 22:59 ` Randy Brukardt
2019-01-15 9:34 ` Dmitry A. Kazakov
2019-01-18 15:48 ` Olivier Henley
2019-01-18 16:08 ` Dmitry A. Kazakov
2019-01-18 16:29 ` Olivier Henley
2019-01-18 16:54 ` Dmitry A. Kazakov
2019-01-18 17:31 ` Olivier Henley
2019-01-18 18:51 ` Shark8
2019-01-18 20:09 ` Dmitry A. Kazakov
2019-01-21 23:15 ` Randy Brukardt
2019-01-22 8:56 ` Dmitry A. Kazakov
2019-01-22 22:00 ` Randy Brukardt
2019-01-23 8:14 ` Dmitry A. Kazakov [this message]
2019-01-22 17:04 ` Jeffrey R. Carter
2019-01-22 22:02 ` Randy Brukardt
2019-01-23 18:00 ` Jeffrey R. Carter
2019-01-23 20:14 ` Shark8
2019-01-23 22:47 ` Randy Brukardt
2019-01-24 17:11 ` Dmitry A. Kazakov
2019-01-28 15:54 ` Shark8
2019-01-28 17:23 ` Dmitry A. Kazakov
2019-01-08 18:32 ` G. B.
2019-01-05 17:05 ` Jeffrey R. Carter
2019-01-05 20:18 ` Dmitry A. Kazakov
2019-01-05 21:09 ` Shark8
2019-01-06 10:11 ` Jeffrey R. Carter
2019-01-05 20:46 ` Shark8
2019-01-06 9:43 ` Dmitry A. Kazakov
2019-01-26 22:11 ` George Shapovalov
2019-01-26 22:14 ` George Shapovalov
-- strict thread matches above, loose matches on Subject: below --
2019-01-29 7:45 Randy Brukardt
2019-01-29 19:34 ` Niklas Holsti
2019-01-29 20:26 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox