>   X := Max(Max(Max(Max(23.0-6.5*Y,Y),Y+Z),Y-Z,Limit);
        >
        >I could define a 'max' operator, and put (in Prolog):
        >
        >   X is 23.0-6.5*Y max Y max Y+Z max Y-Z max Limit,
        >
        >and, I think most readers will agree, this is more readable rather
than
        >less: the operator says what it means; it is associative, so its
direction
        >of precedence doesn't matter; it is defined, fairly naturally I
think, at a
        >lower precedence than the arithmetic operators.

        I would have to disagree about precedence, since I find your
expression confusing at best.  The "standard" arithmetic operators have
precedence rules that are at least standard outside a software environment,
so those are read easier by a human.

        Ironically, I wouldn't use either expression in anything that I
build.  There are plenty of cases where function nesting becomes a bit too
complex regardless of the syntax.  What ever happened to temporary
variables?

        (No comments, Mike, about my "low" line of code count!)

        Bill