comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Lower bounds of Strings
Date: Tue, 12 Jan 2021 16:56:34 -0600	[thread overview]
Message-ID: <rtl9f3$9bg$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 50f68100-8909-4fdb-ad26-14bcbc010775n@googlegroups.com

"Shark8" <onewingedshark@gmail.com> wrote in message 
news:50f68100-8909-4fdb-ad26-14bcbc010775n@googlegroups.com...
> On Tuesday, January 12, 2021 at 1:12:35 AM UTC-7, Randy Brukardt wrote:
>> "Shark8" wrote in message
>> news:26cac901-b901-4c4f
>> On Friday, January 8, 2021 at 7:31:40 PM UTC-7, Randy Brukardt wrote:
>> ...
>> > >Can you give some examples here?
>> > All of the super-null nonsense occurs because of slices, which slows 
>> > down
>> > any code that uses them.
>> What do you mean "super-null" nonsense?
>> Any range that is null is treated as the same by Ada. Any null range 
>> where
>> the bounds are more than 1 apart is known as a "super-null" range. For
>> instance, one typically writes:
>>
>> N : String(1..0)
>>
>> to define a null string object. But you can write *any* null range here:
>>
>> N2 : String(314 .. 25);
>>
>> And it takes code to figure this out at runtime if either bound is 
>> nonstatic
>> (which is usually the case with slices). And you still have to store the
>> bounds (you can still ask for the bounds of N2, and one better get 314 
>> and
>> 25, but the length is still zero). And N = N2, so compares are 
>> complicated
>> (one has to check the length, but that's more expensive to figure out 
>> than
>> just a subtract). You end up generating a lot of code to deal with a 
>> rather
>> unlikely case.
> I understand now.
> You mention the case where the difference in the indices is 1 as being 
> separate; why?

Because the "natural" implementation of the length of an array works when 
the indices are one apart; you don't need extra code to deal with 
String(1..0) - subtracting the bounds and adding 1 (the usual length 
formula) works fine.

> Also, would the sometimes talked about idea of a "null range" have helped 
> the situation out?
> (I don't think so, since the one is the required implementation, and the 
> other is a syntax- and partially semantic-issue.)

Right, the problem is that the syntax allows too much, and any rule to avoid 
the problem necessarily will take code to make some sort of check.

...

                                       Randy.


  reply	other threads:[~2021-01-12 22:56 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 11:04 Lower bounds of Strings Stephen Davies
2021-01-05 11:57 ` Dmitry A. Kazakov
2021-01-05 12:32   ` Jeffrey R. Carter
2021-01-05 13:40     ` Dmitry A. Kazakov
2021-01-05 14:31       ` Stephen Davies
2021-01-05 17:24         ` Stephen Davies
2021-01-05 18:28           ` Jeffrey R. Carter
2021-01-05 21:02             ` Stephen Davies
2021-01-07 10:38               ` Stephen Davies
2021-01-07 21:39                 ` Randy Brukardt
2021-01-07 22:38                   ` Stephen Davies
2021-01-05 12:24 ` Luke A. Guest
2021-01-05 12:49 ` Simon Wright
2021-01-05 12:51 ` Jeffrey R. Carter
2021-01-06  3:08 ` Randy Brukardt
2021-01-06  9:13   ` Dmitry A. Kazakov
2021-01-07  0:17     ` Randy Brukardt
2021-01-07  9:57       ` Dmitry A. Kazakov
2021-01-07 22:03         ` Randy Brukardt
2021-01-08  9:04           ` Dmitry A. Kazakov
2021-01-08 17:23           ` Shark8
2021-01-08 20:19             ` Dmitry A. Kazakov
2021-01-09  2:18               ` Randy Brukardt
2021-01-09 10:53                 ` Dmitry A. Kazakov
2021-01-12  8:19                   ` Randy Brukardt
2021-01-12  9:37                     ` Dmitry A. Kazakov
2021-01-09  2:31             ` Randy Brukardt
2021-01-09 14:52               ` Why UTF-8 (was Re: Lower bounds of Strings) Jeffrey R. Carter
2021-01-09 18:08                 ` Dmitry A. Kazakov
2021-01-12  7:58                   ` Randy Brukardt
2021-01-11 21:35               ` Lower bounds of Strings Shark8
2021-01-12  8:12                 ` Randy Brukardt
2021-01-12 20:51                   ` Shark8
2021-01-12 22:56                     ` Randy Brukardt [this message]
2021-01-13 12:00                       ` Dmitry A. Kazakov
2021-01-13 13:27                         ` AdaMagica
2021-01-13 13:53                           ` Dmitry A. Kazakov
2021-01-13 14:08                   ` Jeffrey R. Carter
2021-01-14 11:38 ` AdaMagica
2021-01-14 12:27   ` Dmitry A. Kazakov
2021-01-14 13:31   ` AdaMagica
2021-01-14 14:02   ` Jeffrey R. Carter
2021-01-14 14:34     ` Dmitry A. Kazakov
2021-01-14 15:28       ` Shark8
2021-01-14 15:41         ` Dmitry A. Kazakov
2021-01-19 21:02           ` G.B.
2021-01-19 22:27             ` Dmitry A. Kazakov
2021-01-20 20:10               ` G.B.
2021-01-20 20:25                 ` Dmitry A. Kazakov
2021-01-15 10:24   ` Stephen Davies
2021-01-15 11:41     ` J-P. Rosen
2021-01-15 17:35       ` Stephen Davies
2021-01-15 19:36         ` Egil H H
2021-01-16 12:57           ` Stephen Davies
2021-01-17 14:10         ` Stephen Davies
2021-01-19  5:48           ` Randy Brukardt
2021-01-19  6:13         ` Gautier write-only address
2021-01-15 11:48     ` Jeffrey R. Carter
2021-01-15 13:34       ` Dmitry A. Kazakov
2021-01-15 13:56       ` Stephen Davies
2021-01-15 15:12         ` Jeffrey R. Carter
2021-01-15 17:22           ` Stephen Davies
2021-01-15 21:10             ` Jeffrey R. Carter
2021-01-15 14:00       ` Stephen Davies
2021-01-16  9:30     ` G.B.
2021-01-16 13:13       ` Stephen Davies
replies disabled

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