From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Shortcut logicals (was: Re: F200x )
Date: 31 Jan 2005 20:16:11 -0500
Date: 2005-01-31T20:16:11-05:00 [thread overview]
Message-ID: <wcc651dnkpw.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: OtidnVAKUaPWT2PcRVn-ig@comcast.com
"James Van Buskirk" <not_valid@comcast.net> writes:
> "James Giles" <jamesgiles@worldnet.att.net> wrote in message
> news:mXzLd.100$xR1.94@bgtnsc04-news.ops.worldnet.att.net...
>
> > Well, I have the F2003 FCD open right now, in �7.4.3 Masked array
> > assignment - WHERE. So, perhaps you can point out what part of
> > it resolves the issue I raised:
>
> > cond1 .and. cond2 .andthen. cond3 .and. cond4
>
> > Is COND4 permitted to be evaluated or not? I don't see that
> > WHERE tells me. It has a concept of "pending control" which
> > I see can be applied on nested constructs, but in the above
> > expression, not of the terms actually present are part of any
> > "pending" condition. Or, are you talking about some other
> > aspect of WHERE entirely?
>
> OK, I have added comp.lang.ada, so hopefully someone there
> can answer the question about the effect of precedence on
> your snippet, and also discuss the ergonomics of Ada short-
> circuiting logical operators, or whatever they call them.
Sorry, I've no idea what the Fortran rules are.
In Ada, the above expression is syntactically illegal -- compile time
error. You can write:
(cond1 and cond2) and then (cond3 and cond4)
or:
((cond1 and cond2) and then cond3) and cond4)
for example.
"and" is just a function call. If you say "X and Y" then X and Y are
both evaluated (in either order) and passed to the "and" function. The
predefined version of "and" returns True if both are True. But "and
then" is a short-circuit control form: if you say "X and then Y", X is
evaluated first, and if it's True, you're done. Otherwise (X is False)
Y is evaluated.
And the syntax rules forbid mixing "and" and "and then" -- you have to
use parens. All of these ("and", "and then", "or", "or else", "xor")
are lower precedence than most other operators in Ada. So you can
write:
A <= B and B <= C
which means the same as:
(A <= B) and (B <= C)
The point of "and then" is so you can write things like:
Y /= 0 and then X/Y < 10
where X/Y makes no sense if Y is zero.
- Bob
next prev parent reply other threads:[~2005-02-01 1:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <41f94cab$1@news1.ethz.ch>
[not found] ` <INfKd.13707$bh6.378409@weber.videotron.net>
[not found] ` <nospam-6F7AE0.11340228012005@news.supernews.com>
[not found] ` <lqjnv01969glk2mbv1plvjdn5idkb1c3db@4ax.com>
[not found] ` <1107060103.157135.325010@z14g2000cwz.googlegroups.com>
[not found] ` <8u2pv0tdd9b1v689rtqc2c2tlm9pn9t1t6@4ax.com>
[not found] ` <1107085125.849687.318060@c13g2000cwb.googlegroups.com>
[not found] ` <1107096062.786125.100030@f14g2000cwb.googlegroups.com>
[not found] ` <10vq094k09igv3c@corp.supernews.com>
[not found] ` <eudLd.43724$8u5.37685@bgtnsc04-news.ops.worldnet.att.net>
[not found] ` <1107160100.162171.223490@f14g2000cwb.googlegroups.com>
[not found] ` <cTxLd.126318$w62.46060@bgtnsc05-news.ops.worldnet.att.net>
[not found] ` <xfKdnUflrtW3I2PcRVn-og@comcast.com>
[not found] ` <rEzLd.68$xR1.54@bgtnsc04-news.ops.worldnet.att.net>
[not found] ` <ON-dnSQzGfXOVWPcRVn-1A@comcast.com>
[not found] ` <mXzLd.100$xR1.94@bgtnsc04-news.ops.worldnet.att.net>
2005-02-01 0:56 ` Shortcut logicals (was: Re: F200x ) James Van Buskirk
2005-02-01 1:16 ` Robert A Duff [this message]
2005-02-01 6:49 ` Shortcut logicals Martin Dowie
2005-02-01 13:46 ` Robert A Duff
2005-02-01 8:08 ` Shortcut logicals (was: Re: F200x ) Martin Krischik
2005-02-01 1:43 ` James Giles
2005-02-01 2:33 ` James Van Buskirk
2005-02-01 2:53 ` James Giles
2005-02-01 3:49 ` James Van Buskirk
2005-02-01 4:31 ` James Giles
2005-02-01 8:49 Christoph Grein
2005-02-01 11:43 ` Martin Krischik
2005-02-01 12:45 ` Adrien Plisson
2005-02-01 14:03 ` Martin Krischik
2005-02-01 14:56 ` Les
2005-02-01 16:57 ` Frank J. Lhota
2005-02-01 17:55 ` Dan Nagle
2005-02-01 18:25 ` James Giles
2005-02-01 13:57 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox