[net.lang] New control structure

macrakis@harvard.UUCP (Stavros Macrakis) (03/10/86)

Frank Adams (franka@mmintl.UUCP) writes that he often uses a control
structure which is hard to code using standard primitives.  I show
here that (1) his particular case can straightforwardly be programmed
and (2) that the general problem of which his is a special case cannot
be handled by any of the standard techniques.

His particular case can, in fact, easily be written (in Ada for example) as:

	Av := A; 			-- boolean A
	if Av then X; end if;		-- Av only needed in special case
	if (Av and then B) then Y;	-- where A and X interfere, or
	 else Z;			-- A is expensive
	end if;

His proposed solution is somewhat neater, but is it worth the (very)
special case?:

	if (A) then X;
          and if (B) then Y;
          else Z;

After all, in general, control structures of the form:
	[ <boolean function> => clause;
	  <boolean function> => clause;
	  ... ]
cannot be written -- not in flowcharts/goto programs, not in
if-then-else, not even in if-and-if -- in such a way that boolean
variables are not repeated.  `Decision tables' do clean up this
situation somewhat.

Adams also points out that some languages do not provide for
short-circuit boolean operators (or leave the semantics of boolean
operators up to the implementation!).  This is, as far as I can tell,
an entirely separate problem.

	-s