From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada case-statement
Date: Thu, 15 Mar 2018 17:20:28 -0500
Date: 2018-03-15T17:20:28-05:00 [thread overview]
Message-ID: <p8erjd$mo5$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: p8dbcp$11bc$1@gioia.aioe.org
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:p8dbcp$11bc$1@gioia.aioe.org...
> On 15/03/2018 00:16, Randy Brukardt wrote:
...
> Ugh, that could be a source quite intractable bugs. If so, I use this
> pattern time to time then:
>
> declare
> Selector : Day_Type renames Calculate_Day;
> subtype Weekend_Subtype is Day_Type range Sat .. Sun;
> begin
> case Selector is
> when Mon .. Fri =>
> ...
> when Weekend_Subtype =>
> ...
> case Weekend_Subtype'(Selector) is
> when Sat =>
> ...
> when Sun =>
> ...
> end case;
> end case;
You're right, that's better.
> And this does not work with
>
> when Odd_Week_Day : Mon | Wed | Fri =>
Wrong:
subtype Odd_Week_Day is Day_Type
with Static_Predicate => Odd_Week_Day in Mon | Wed | Fri;
...
when Odd_Week_Day =>
...
case Odd_Week_Day'(Selector) is
The subtype is the (admittedly ugly - I wanted something cleaner) way to
declare a set constraint. If the predicate is static, it works in loops and
case statements with the usual rules.
>> Personally, I don't like declarations without explicit subtypes, as the
>> subtype of an object is critical for understanding the semantics. Not
>> having
>> the subtype in the source makes it much harder to understand the
>> semantics.
>
> Huh, it is definitely true for types, but Ada subtypes are designed for
> exactly the opposite. On many occasions people here argued that Ada
> subtype is not a type. Well, from that point of view it must have exactly
> the same semantics as its base. What's is there to understand more?
You have to have the subtype in the source to know the type -- Ada does not
have names for types.
>> Expanding the "id :" notation would definitely harm understandability of
>> Ada
>> code, and with readability being pretty much the first priority for Ada
>> syntax, that's a bad thing.
>
> I don't see how giving a name could add anything to the semantics. Each
> alternative exhaustively defines a constraint. No reason to contaminate
> the name space.
How does
when Today: Thurs =>
exhaustively define anything? It just defines a constraint, but there is not
way to know of what. You have to look at the selecting_expression to find
the type -- but it doesn't show it either. It might a function call as in
this example. So then you have to look at the function to get the return
type, but it will turn out to have been implemented in a generic or
inherited in OOP. So now you're on 4-5 hops and you've forgotten why you
were looking for the type in the first place. :-)
Surely a fancy IDE would help, but if you need a fancy IDE to undertstand
your code, it isn't readable.
Randy.
next prev parent reply other threads:[~2018-03-15 22:20 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-14 17:35 Ada case-statement Stephen Davies
2018-03-14 17:49 ` Dmitry A. Kazakov
2018-03-15 0:57 ` Robert I. Eachus
2018-03-15 3:10 ` Dan'l Miller
2018-03-15 5:54 ` J-P. Rosen
2018-03-15 7:56 ` Niklas Holsti
2018-03-15 12:21 ` Dan'l Miller
2018-03-15 17:22 ` Mill processor (Was: Re: Ada case-statement) Niklas Holsti
2018-03-15 21:50 ` Ada case-statement Randy Brukardt
2018-03-14 22:22 ` Mehdi Saada
2018-03-14 23:16 ` Randy Brukardt
2018-03-15 5:04 ` gautier_niouzes
2018-03-15 7:50 ` Jacob Sparre Andersen
2018-03-15 22:05 ` Randy Brukardt
2018-03-15 8:37 ` Dmitry A. Kazakov
2018-03-15 22:20 ` Randy Brukardt [this message]
2018-03-16 8:54 ` Dmitry A. Kazakov
2018-03-16 23:49 ` Randy Brukardt
2018-03-17 7:59 ` Dmitry A. Kazakov
2018-03-15 15:37 ` Stephen Davies
2018-03-15 16:33 ` J-P. Rosen
2018-03-15 17:01 ` Dmitry A. Kazakov
2018-03-15 18:41 ` Shark8
2018-03-15 21:12 ` Jeffrey R. Carter
2018-03-18 5:41 ` Robert I. Eachus
2018-03-18 6:57 ` Spiros Bousbouras
2018-03-18 9:17 ` Jeffrey R. Carter
2018-03-18 12:53 ` Simon Wright
2018-03-15 18:50 ` Jere
2018-03-15 20:40 ` Anh Vo
2018-03-15 22:24 ` Randy Brukardt
2018-03-16 9:53 ` Stephen Davies
2018-04-03 17:56 ` marciant
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox