The statements
IF (a>b) THEN
LET m = a
ELSE
LET m = b
ENDIF
compute in m the maximum of a and b. The conditional expression, written with the ternary operator '?', provides an alternative way to write this and similar constructions. In the expression
?{<expression_if>,<expression_then>,<expression_else>}
the expression <expression_if> is evaluated first. If it is true, then <expression_then> is evaluated, and that is the value of the conditional expression. Otherwise <expression_else> is evaluated, and that is the value. Only one of <expression_then> and <expression_else> is evaluated. According to the IF-THEN-ELSE statement above we can state the equivalent conditional statement
LET m = ?{(a>b),a,b}.
The conditional expression can be used to reduce code and to make programs more compact. A brief example should illustrate the use of CST(C&F)'s expression interpreters functionality.
LET c1 = MIN(i=1:10){Vector[i]}.
LET c2 = MAX{Array[j]}*#j.
LET result = ?{((c1>c2)|(c2=0)),(c1-c2),SQR(c1/c2)}
PRINT result
As we can see, this program works without any use of LOOP, FOR-NEXT or IF-THEN-ELSE-statements.