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.yTvCNOh9TRCAIcX40YItlQ.user.gioia.aioe.org!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: class wide iterable (and indexable) Date: Mon, 28 Jan 2019 18:23:08 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <2a6929c5-72fa-4d84-953a-44ea4597ab38@googlegroups.com> <75328dc5-fc59-4228-b77e-77ba6e5101c3@googlegroups.com> <9eedf818-8bfb-465b-afe5-aa3fb0525948@googlegroups.com> NNTP-Posting-Host: yTvCNOh9TRCAIcX40YItlQ.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.9.1 Content-Language: en-US Xref: reader01.eternal-september.org comp.lang.ada:55390 Date: 2019-01-28T18:23:08+01:00 List-Id: On 2019-01-28 16:54, Shark8 wrote: > On Wednesday, January 23, 2019 at 3:47:43 PM UTC-7, Randy Brukardt wrote: >> "Shark8" wrote in message >> news:9eedf818-8bfb-465b-afe5-aa3fb0525948... >>> Wouldn't this be a non-issue if we could Static_Predicate Array-types like >>> so? >>> >>> Type Some_String is Array(Positive range <>) of Character >>> with Static-Predicate => Some_String'First = 1; >> >> The idea of a static predicate is for them to stand-in for proper set >> constraints (I would have preferred the latter, but I was alone on that), so >> they don't have anything to do with array bounds. > > What do you mean by "proper set constraints"? [And how would they look?] > Things like {x| x in {2**y where y in 0..15} }? (X in 1|2|4|8|16|..|32_768) Certainly not an arbitrary constraint. The problem is with the operations, i.e. with substitutability. Constraining should not violate much of it and the user must known what gets broken. An arbitrary constraint breaks pretty much everything and you have no idea which operations still work. Ada's range constraint breaks a limited number of things and many of these breaks can be statically checked. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de