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