comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: initialize an array (1-D) at elaboration using an expression based on the index?
Date: Fri, 12 Nov 2010 12:10:09 -0600
Date: 2010-11-12T12:10:09-06:00	[thread overview]
Message-ID: <ibjvu4$c9a$1@munin.nbi.dk> (raw)
In-Reply-To: d779c161-3199-45ca-87ae-d0501c74e219@26g2000yqv.googlegroups.com

"Shark8" <onewingedshark@gmail.com> wrote in message 
news:d779c161-3199-45ca-87ae-d0501c74e219@26g2000yqv.googlegroups.com...
>> ... having been raised on Algol-W I am delighted to see them come back.
>>
>> Is it their unfamiliarity that disturbs you?
>
> No, not so much.
> I don't see how they are [strictly-speaking] necessary, given that we
> have declare-blocks (which can be arbitrarily-nested).
> Granted, they would make it a lot less verbose in many cases. {BTW, if
> we're going to allow if/then statements inside expressions &
> assignments/initializations then what's keeping us from using case-
> statements too?}

(Yes, Ada2012 has case expressions; coverage checking is important and not 
be be sacrificed just because you are writing an expression.)

You can't write a declare block in a declarative part, inside of a pragma, 
or (for Ada 2012) inside of an aspect specification or expression function. 
The first is a significant problem in Ada 95; you have to write:

                  Max_Value : constant Natural := Boolean'Pos(<some 
expr>)*TRUE_VALUE+
                                                                    Boolean'Pos(not 
<some expr>)*FALSE_VALUE;

In order to get a static conditional expression. To claim that the above is 
at all understandable or readable is BS, plus it duplicates the expression.

                  Max_Value : constant Natural := (if <some expr> then 
TRUE_VALUE else FALSE_VALUE);

is worlds better. And it gets even more fun if you have multiple cases...

                             Randy.







      parent reply	other threads:[~2010-11-12 18:10 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-15 23:03 initialize an array (1-D) at elaboration using an expression based on the index? Nasser M. Abbasi
2010-10-15 23:31 ` Vinzent Hoefler
2010-10-16  0:16   ` Adam Beneschan
2010-10-16  0:29     ` Nasser M. Abbasi
2010-10-16  1:47       ` Robert A Duff
2010-10-16  1:01     ` Randy Brukardt
2010-10-16 10:08     ` Phil Clayton
2010-10-18 15:03       ` Adam Beneschan
2010-10-19  6:29         ` Randy Brukardt
2010-10-20 20:01         ` Phil Clayton
2010-10-19 16:34     ` Britt Snodgrass
2010-10-19 18:05       ` Jeffrey Carter
2010-10-19 19:00         ` Vinzent Hoefler
2010-11-10 14:33     ` Georg Bauhaus
2010-11-10 15:51       ` Adam Beneschan
2010-11-10 17:19         ` Dmitry A. Kazakov
2010-11-10 18:03           ` Adam Beneschan
2010-11-11  1:07         ` Georg Bauhaus
2010-11-11  8:30           ` Dmitry A. Kazakov
2010-11-11 12:02           ` Robert A Duff
2010-11-11 14:19             ` Georg Bauhaus
2010-10-16  0:52 ` Jeffrey Carter
2010-10-16  0:54 ` Gene
2010-10-16  1:11   ` Vinzent Hoefler
2010-10-21 13:44 ` Chad  R. Meiners
2010-10-24 16:40   ` Shark8
2010-10-24 22:48     ` Phil Clayton
2010-10-25  2:23       ` Shark8
2010-10-29 23:26         ` Phil Clayton
2010-10-31 18:47           ` Shark8
2010-10-31 21:59             ` Georg Bauhaus
2010-11-01  0:45             ` Phil Clayton
2010-11-01  1:55               ` Shark8
2010-10-30  6:34         ` Brian Drummond
2010-10-31 19:00           ` Shark8
2010-10-31 18:09             ` (see below)
2010-10-31 19:35               ` Shark8
2010-10-31 22:47                 ` (see below)
2010-11-01  0:07                   ` Shark8
2010-10-31 23:21                     ` (see below)
2010-10-31 21:26             ` Brian Drummond
2010-11-12 18:10             ` Randy Brukardt [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox