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!reader02.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Community Input for the Maintenance and Revision of the Ada Programming Language Date: Wed, 13 Sep 2017 10:57:47 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <9a6338d9-83be-4e45-b8b7-edc56e33537f@googlegroups.com> <2deb28e2-f7e8-4461-b8b8-c2c6cf2784aa@googlegroups.com> <5de470d2-aa3d-4c02-ae2b-266c33a289fe@googlegroups.com> <5126ef7a-3324-4e44-b110-5e4838189f5f@googlegroups.com> <3c76c2ed-319f-410c-8dec-6a80a0948c7a@googlegroups.com> <1c8a3a96-1cdb-4c16-9c25-2da9bbf52cc9@googlegroups.com> <4bebca5c-5044-457b-b623-9c79da90945f@googlegroups.com> <83bcc588-4762-47f5-9130-74faa7d9c25d@googlegroups.com> <7958612a-2198-4257-8a76-7e2d913f1dad@googlegroups.com> NNTP-Posting-Host: vZYCW951TbFitc4GdEwQJg.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 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:48099 Date: 2017-09-13T10:57:47+02:00 List-Id: On 13/09/2017 10:13, Egil H H wrote: > On Wednesday, September 13, 2017 at 9:24:56 AM UTC+2, Dmitry A. Kazakov wrote: >>>> >>>> X : String (1..1000); >>>> Y : String (1..10); >>>> >>> >>> You still can't do >>> X := Y; >> >> Of course I can it is the same type. > > Not without a Constraint_Error being raised... Which is the desired effect. >>> so why would you expect Bounded_String to behave that way? >> >> Because the contracts of ":=" of fixed- and variable-length strings are >> different. >> >> Fixed-length string assignment cannot change length, as the type name >> suggests. So the contract is that if the lengths are different >> Constraint_Error is propagated. > > Exactly my point... No, you said I cannot assign <=> it would be an illegal program. That is wrong. I can. The program is legal, its behavior is defined. > You can't just do X := Y when the ranges differ, It is a legal Ada program. It compiles and works as expected. > and you can't just > do X := Y for Bounded_Strings when they are of different types. This has nothing to do with strings being bounded or not. If an operation is not defined on the given combination of types, then it is. Calling undefined operations is an illegal program. >> For bounded-length strings the contract is that the length may not >> exceed the bound. So the contract is that Constraint_Error to propagate >> only then. > > Yes, and there are different types depending on the needs of the users. Non sequitur. The contract of bounded-length string assignment and user needs for having types same or different are unrelated issues. There are plenty examples when the type is same but instances' constraints are different. Ada's subtypes and discriminated types are all about that. One can easily find examples for differently constrained instances of bounded-length strings: Windows_Name : File_Name (MAX_PATH); DOS_Name : File_Name (8 + 1 + 3); P.S. For further insights see the package Standard with Integer *subtypes* Natural and Positive etc. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de