comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada case-statement
Date: Wed, 14 Mar 2018 18:16:27 -0500
Date: 2018-03-14T18:16:27-05:00	[thread overview]
Message-ID: <p8cagc$7fb$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 365d65ea-5f4b-4b6a-be9b-1bba146394ab@googlegroups.com

"Stephen Davies" <joviangm@gmail.com> wrote in message 
news:365d65ea-5f4b-4b6a-be9b-1bba146394ab@googlegroups.com...
...
> Ok, I know this isn't going to happen, I just wanted to
> put it out there anyway.

Since the deadline for suggestions for Ada 2020 was January 15th, you are 
right. ;-)

OTOH, someone made a fairly similar suggestion before the deadline; it was 
folded into existing AI12-0214-1. (As usual, no one is really doing a good 
job of explaining the "problem" rather than proposing a cool "solution". The 
ARG is perfectly capable of inventing a half-dozen solutions to any problem. 
:-) This matters mainly because we want to minimize the number of 
"solutions" in a language update.)

The problem is that we have far more "problems" and suggestions than we have 
time to implement in the Standard. We are trying to figure out right now how 
to prioritize the 60+ problems/solutions on our plate. Some worthy ideas are 
certainly going to go nowhere, even though they might be fine.

In any case, you can get what you want with some additional text, so I would 
guess that the priority of such a change would be relatively low:

declare
  Selector : Day_Type renames Calculate_Day;
  subtype Weekend_Subtype is Day_Type range Sat .. Sun;
     -- Or use a static predicate if the range is discontiguous.
begin
  case Selector is
      when Mon .. Fri =>
         ...
      when  Sat | Sun =>
         ...
         case Weekend_Subtype'(Selector) is -- A type conversion works, too.
            when Sat =>
               ...
            when Sun =>
               ...
         end case;
   end case;
end;

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.

Currently, the "id :" notation occurs in three places without an explicit 
subtype (block ids, loop ids, exception occurrences). The first two have 
types that don't even have names (and id can only be used in a handful of 
circumstances). The third has a well-defined composite type that has no 
subtypes (so there is no semantic information to be gained by writing it 
out).

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.

We have been considering making the subtype name in an object renames 
optional -- the subtype is a lie anyway (since it is ignored semantically), 
and other important properties of the renamed object like "constant" are 
omitted. That's about as far as I will go for typeless declarations (and 
perhaps even that is too far).

But - I am not the ARG, I'm just one member. The actual language agreed on 
may differ. :-)

                                     Randy.




  parent reply	other threads:[~2018-03-14 23:16 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 [this message]
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
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