comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Strange crash on custom iterator
Date: Wed, 4 Jul 2018 09:21:00 +0200
Date: 2018-07-04T09:21:00+02:00	[thread overview]
Message-ID: <phhsgr$1u8l$1@gioia.aioe.org> (raw)
In-Reply-To: 1f634e80-a1e7-4fb1-8cdf-5db6a773f36d@googlegroups.com

On 2018-07-03 23:04, Lucretia wrote:
> On Tuesday, 3 July 2018 21:18:28 UTC+1, Dmitry A. Kazakov  wrote:
> 
>>> Well, they kind of already did that by subtyping UTF_String from String, of which it's not a subtype, it's just they are both arrays of 8-bit entities.
>>
>> No. Both are arrays of code points and arrays of octets. The ranges of
>> code points are different. The correspondence between code points and
>> octets are different. Thus the subtyping is broken.
> 
> I know the difference between code points and octets and their arrays. I was saying that UTF_String is not a valid subtype of String because String is Latin 1 and UTF_String is a superset of 7-bit ASCII, not 8-bit Latin 1.

No, that does not break subtyping if Constraint_Error is in the 
contract. Subtyping is broken when the array of Latin-1 code points 
(String) corresponds to the array of representation units (octets of 
UTF8_String).

Array of Latin-1 code points corresponds to the array of Unicode code 
points. It has nothing to do with the underlying encoding, whatever it 
might be.

Each string implements two unrelated array interfaces:

1. Array of encoding units, e.g. array of octets
2. Array of code points

#1 and #2 are historically confused because one resembles another for a 
certain class encodings like ASCII, UCS-2, UCS-4. They are absolutely 
different for UTF-8 and UTF-16.

>>> Am i wrong, should I just implement what I need on top of the standard lib and just use the UTF* types in my code? What about unbounded_utf_strings? Just use the normal unbounded_string? It's not like it's going to be checking for it to be correct utf8 is it, but I can't write an iterator for that from outside the rts though.
>>
>> There is no way to do it right in Ada for now.
> 
> What do you mean exactly????

For simplicity start with designing character types: Character, 
Wide_Character and Wide_Wide_Character as related types.

    X : Character; -- Character'Size = 8
    Y : Wide_Character := Y; -- This must be legal

Already this is impossible in Ada.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  parent reply	other threads:[~2018-07-04  7:21 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-30 10:48 Strange crash on custom iterator Lucretia
2018-06-30 11:32 ` Simon Wright
2018-06-30 12:02   ` Lucretia
2018-06-30 14:25     ` Simon Wright
2018-06-30 14:33       ` Lucretia
2018-06-30 19:25         ` Simon Wright
2018-06-30 19:36           ` Luke A. Guest
2018-07-01 18:06             ` Jacob Sparre Andersen
2018-07-01 19:59               ` Simon Wright
2018-07-02 17:43                 ` Luke A. Guest
2018-07-02 19:42                   ` Simon Wright
2018-07-03 14:08                     ` Lucretia
2018-07-03 14:17                       ` J-P. Rosen
2018-07-03 15:06                         ` Lucretia
2018-07-03 15:45                           ` J-P. Rosen
2018-07-03 15:55                             ` Lucretia
2018-07-03 17:00                               ` J-P. Rosen
2018-07-03 15:57                             ` Dmitry A. Kazakov
2018-07-03 16:07                               ` Lucretia
2018-07-03 16:36                                 ` Dmitry A. Kazakov
2018-07-03 16:42                                   ` Lucretia
2018-07-03 16:45                                     ` Lucretia
2018-07-03 20:18                                     ` Dmitry A. Kazakov
2018-07-03 21:04                                       ` Lucretia
2018-07-04  1:26                                         ` Dan'l Miller
2018-07-04  1:59                                           ` Lucretia
2018-07-04  7:37                                             ` Dmitry A. Kazakov
2018-07-04 12:46                                             ` Dan'l Miller
2018-07-04 13:37                                             ` Dennis Lee Bieber
2018-07-04  7:21                                         ` Dmitry A. Kazakov [this message]
2018-07-03 18:54                                   ` Dan'l Miller
2018-07-03 20:22                                     ` Dmitry A. Kazakov
2018-07-04  7:33                                   ` J-P. Rosen
2018-07-04  7:53                                     ` Dmitry A. Kazakov
2018-07-04  9:55                                       ` J-P. Rosen
2018-07-04 10:01                                         ` Dmitry A. Kazakov
2018-07-04 11:30                                           ` J-P. Rosen
2018-07-04 13:27                                             ` Dmitry A. Kazakov
2018-07-04 14:37                                               ` Dan'l Miller
2018-07-04 14:43                                                 ` Dan'l Miller
2018-07-04 14:57                                                 ` J-P. Rosen
2018-07-04 15:41                                                 ` Lucretia
2018-07-04 16:55                                                   ` Dan'l Miller
2018-07-04 18:01                                                     ` Shark8
2018-07-04 18:57                                                       ` Dmitry A. Kazakov
2018-07-04 19:53                                                         ` Shark8
2018-07-04 20:05                                                           ` Lucretia
2018-07-04 22:04                                                             ` Shark8
2018-07-05  0:12                                                               ` Dan'l Miller
2018-07-05  1:46                                                                 ` Shark8
2018-07-05  2:07                                                                   ` Luke A. Guest
2018-07-05 16:47                                                                     ` Shark8
2018-07-05 17:19                                                                       ` Dan'l Miller
2018-07-05 19:14                                                                         ` Shark8
2018-07-04 20:43                                                           ` Dmitry A. Kazakov
2018-07-04 17:51                                             ` Jacob Sparre Andersen
2018-07-04 18:06                                               ` Shark8
2018-07-04 18:59                                                 ` Dan'l Miller
2018-07-04 19:01                                                 ` Dmitry A. Kazakov
2018-07-05 18:08                                                   ` Randy Brukardt
2018-07-05 19:41                                                     ` Dmitry A. Kazakov
2018-07-04 21:00                                                 ` Jacob Sparre Andersen
2018-07-05 18:06                                               ` Randy Brukardt
2018-07-04 19:02                                       ` G. B.
2018-07-04 19:16                                         ` Dmitry A. Kazakov
2018-07-04 20:40                                           ` G. B.
2018-07-04 20:55                                             ` Dmitry A. Kazakov
2018-07-04 21:21                                               ` G.B.
2018-07-05  7:55                                                 ` Dmitry A. Kazakov
2018-07-06  8:28                                                   ` G.B.
2018-07-06  8:57                                                     ` Dmitry A. Kazakov
2018-07-02  8:31               ` Lucretia
2018-06-30 14:34       ` Lucretia
replies disabled

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