From: Vinzent Hoefler <nntp-2008-08@t-domaingrabbing.de>
Subject: Re: and then... (a curiosity)
Date: 3 Sep 2008 21:01:18 GMT
Date: 2008-09-03T21:01:18+00:00 [thread overview]
Message-ID: <6i8c8uFp5ufgU2@mid.individual.net> (raw)
In-Reply-To: wccljya6zmt.fsf@shell01.TheWorld.com
On Tue, 02 Sep 2008 16:50:34 -0400, Robert A Duff wrote:
> Ray Blaak <rAYblaaK@STRIPCAPStelus.net> writes:
>
>> Martin Krischik <krischik@users.sourceforge.net> writes:
>>> When I was at Polytechnic first language was PL/1, second Pascal and
>>> therefore methodology was different. i.E. Don't rely on the execution
>>> order of boolean expressing.
>>
>> This I also agree with, although I admit being used to the short circuit &&
>> forms in the C-like languages.
>>
>> But my point is about having the source code be clearer when both
>> operands are required to be evaluated, especially when this is a
>> possibility:
>
> It seems to me that two cases come up in practise, for "A and [then] B".
> Either I don't care which gets evaluated first, and don't care whether
> or not both get evaluated, because there are no important side effects
> (that's "A and B"), or I care about order (that's "A and then B").
>
> I never see cases where it is important that A and B both be evaluated.
>
> Counterexamples, please? ;-) Realistic ones, I mean.
Hmm. Digging in *really* old (Turbo-Pascal) sourcecode, I found an old map
editor:
Example #1:
-- 8< --
{$IFOPT B+} {$DEFINE OPTB} {$B-} {$ENDIF}
for i := 0 to TESTFUNCS - 1 do
b := b and MapTest[i](Contents);
{$IFDEF OPTB} {$UNDEF OPTB} {$B+} {$ENDIF}
-- 8< --
MapTest is a list of procedures I wanted to execute to check the validity
of an edited map prior to exporting it.
#2:
-- 8< --
{$IFOPT B-} {$DEFINE OPTB} {$B+} {$ENDIF}
repeat
P := Message (Desktop, evBroadCast, cmClose, @C);
until ((P = NIL) or (C = cmCancel));
{$IFDEF OPTB} {$UNDEF OPTB} {$B-} {$ENDIF}
-- 8< --
Not quite sure, why I did it here. Seems, more than 10 years ago, I lacked
commenting properly. ;)
Finally #3 (and one of those MapTest functions mentioned above, so one can
see why I did it):
-- 8< --
{$A+,B-,D+,E-,F+,G+,I+,L+,N-,O+,R-,S-,V+,X-}
{ ^^ important!!!}
[...]
function AtLeastOneActor;
var
b : boolean;
i,
j : byte;
begin
b := False;
for i := 1 to 62 do
for j := 1 to 62 do
b := b or (X.mpObj_Data[i][j].odActors <> 0);
AtLeastOneActor := b or SaveMsgBox (NOACTOR);
end; {AtLeastOneActor}
-- 8< --
(Uh, bad code, literal constants...)
So, maybe I would generally write it different today, but for an example,
it is as real as it gets.
Vinzent.
next prev parent reply other threads:[~2008-09-03 21:01 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-29 21:06 and then... (a curiosity) mockturtle
2008-08-29 21:47 ` Samuel Tardieu
2008-08-30 21:28 ` Maciej Sobczak
2008-08-31 8:28 ` Georg Bauhaus
2008-08-31 23:21 ` Ray Blaak
2008-09-01 8:05 ` Martin Krischik
2008-09-01 17:56 ` Ray Blaak
2008-09-02 6:53 ` Martin Krischik
2008-09-02 14:56 ` Adam Beneschan
2008-09-02 16:28 ` Ray Blaak
2008-09-02 16:26 ` Ray Blaak
2008-09-02 20:50 ` Robert A Duff
2008-09-03 12:35 ` Brian Drummond
2008-09-03 15:56 ` Robert A Duff
2008-09-04 22:09 ` Brian Drummond
2008-09-03 21:01 ` Vinzent Hoefler [this message]
2008-09-02 14:50 ` Adam Beneschan
2008-08-29 22:28 ` Adam Beneschan
2008-08-30 1:06 ` Jeffrey R. Carter
2008-08-30 11:21 ` Dmitry A. Kazakov
2008-08-30 15:35 ` Peter C. Chapin
2008-09-02 15:06 ` Adam Beneschan
2008-09-02 3:41 ` Steve
2008-09-02 7:48 ` stefan-lucks
2008-09-02 8:57 ` Martin Krischik
2008-09-02 10:50 ` stefan-lucks
2008-09-02 10:33 ` Ludovic Brenta
2008-09-02 13:32 ` stefan-lucks
2008-09-02 12:53 ` Ludovic Brenta
2008-09-02 17:32 ` Georg Bauhaus
2008-09-03 13:14 ` stefan-lucks
2008-09-03 12:44 ` Dmitry A. Kazakov
2008-09-02 13:39 ` stefan-lucks
2008-09-02 13:40 ` stefan-lucks
2008-09-02 16:48 ` Dmitry A. Kazakov
2008-09-02 17:00 ` Keith Thompson
2008-09-02 19:15 ` Simon Wright
2008-09-02 20:37 ` Robert A Duff
2008-09-02 20:58 ` Jeffrey R. Carter
2008-09-02 21:08 ` Robert A Duff
2008-09-03 12:24 ` Pascal Obry
2008-09-02 22:34 ` Santiago Urueña
2008-09-03 5:56 ` Robert A Duff
2008-09-03 6:55 ` Santiago Urueña
2008-09-03 14:14 ` Adam Beneschan
2008-09-03 0:11 ` Randy Brukardt
2008-09-02 17:20 ` Georg Bauhaus
2008-09-04 1:05 ` Stephen Leake
2008-09-04 6:45 ` stefan-lucks
2008-09-04 7:35 ` Dmitry A. Kazakov
2008-09-04 12:04 ` stefan-lucks
2008-09-04 13:00 ` Dmitry A. Kazakov
2008-09-04 19:05 ` stefan-lucks
2008-09-04 20:28 ` Dmitry A. Kazakov
2008-09-05 6:57 ` stefan-lucks
2008-09-05 6:34 ` Ray Blaak
2008-09-05 14:14 ` Robert A Duff
2008-09-05 15:04 ` Dmitry A. Kazakov
2008-09-07 16:45 ` stefan-lucks
2008-09-05 15:14 ` Hyman Rosen
2008-09-05 15:59 ` Adam Beneschan
2008-09-05 16:10 ` Hyman Rosen
2008-09-07 16:36 ` stefan-lucks
2008-09-07 16:08 ` Gautier
2008-09-04 7:39 ` Karel Th�nissen
2008-09-04 12:12 ` stefan-lucks
2008-09-04 15:13 ` Georg Bauhaus
2008-09-04 15:16 ` Karel Th�nissen
2008-09-04 15:42 ` Dmitry A. Kazakov
2008-09-04 19:27 ` stefan-lucks
2008-09-04 19:43 ` stefan-lucks
2008-09-04 19:40 ` Georg Bauhaus
2008-09-05 7:00 ` stefan-lucks
2008-09-05 6:35 ` Ray Blaak
2008-09-04 20:06 ` Karel Th�nissen
2008-09-05 7:44 ` stefan-lucks
2008-09-05 6:41 ` Vinzent Hoefler
2008-09-04 20:09 ` Karel Th�nissen
2008-09-05 7:25 ` stefan-lucks
2008-09-05 6:37 ` Ray Blaak
2008-09-05 8:20 ` stefan-lucks
2008-09-05 13:57 ` Robert A Duff
2008-09-04 16:33 ` Dmitry A. Kazakov
2008-09-04 19:31 ` stefan-lucks
2008-09-04 19:59 ` Karel Th�nissen
2008-09-05 7:27 ` stefan-lucks
2008-09-05 8:38 ` Ludovic Brenta
2008-09-04 20:17 ` Dmitry A. Kazakov
2008-09-05 13:26 ` Robert A Duff
2008-09-05 13:49 ` Robert A Duff
2008-09-03 1:24 ` Stephen Leake
2008-09-03 3:31 ` tmoran
2008-09-03 13:22 ` stefan-lucks
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox