From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: class wide iterable (and indexable) Date: Fri, 18 Jan 2019 17:54:43 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <2a6929c5-72fa-4d84-953a-44ea4597ab38@googlegroups.com> <75328dc5-fc59-4228-b77e-77ba6e5101c3@googlegroups.com> <5a14ceb8-4490-4e7c-a140-fbb5579a5aad@googlegroups.com> NNTP-Posting-Host: i065DRYuysvTI4qVnaNkyg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US Xref: reader01.eternal-september.org comp.lang.ada:55309 Date: 2019-01-18T17:54:43+01:00 List-Id: On 2019-01-18 17:29, Olivier Henley wrote: >> Array interface is not separated from implementation/representation. The >> problems with String encoding is a consequence of. You cannot have >> differently encoded Strings with the same interface. You cannot have two >> array interfaces for the same String (array of characters vs. array of >> encoding units, e.g. of code points). > > Ok but is it not the intended purpose of an 'array' to be/stay a 'primitive memory mapping construct'? That is a purpose of a builtin array, a building block of user types implementation. *If* a builtin array is all the user needs, fine. That is 80% of the cases. But the example of containers represent multiple cases when just primitive memory mapping is not enough. Concurrently accessed arrays is another example. Externally kept arrays, e.g. interfacing other language, DB, network etc is yet another example. The same applies to record types, access types, enumeration types, numeric types, subroutine types, task types, protected types. Each one must have an interface which can be used together with a custom implementation or the builtin implementation. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de