<p>Am 09.10.2015 20:29 schrieb "Michael Van Canneyt" <<a href="mailto:michael@freepascal.org">michael@freepascal.org</a>>:<br>
><br>
><br>
><br>
> On Fri, 9 Oct 2015, Dmitry Boyarintsev wrote:<br>
><br>
>> The only Pascal way is<br>
>><br>
>> left := IfThen(expr1, expr2, expr3)<br>
>><br>
>> Similar to addr(), sizeof(), length(), write() and recently added Default()<br>
>> in intrinsic.<br>
>> I guess functions declared in Math unit are not covering all the needs<br>
>> (since type of expr2, expr3) may vary.<br>
>> That's why a bit of compiler support is needed.<br>
><br>
><br>
> The main reason compiler support is needed is that Expr3 must not be evaluated if expr1 is true, and expr2 must not be evaluated if expr1 is false, at least if you want the ternary semantics. (as once explained to me by Sven himself...)<br>
><br>
> I'm not sure this kind of semantics is possible with a compiler intrinsic...<br>
> But if it is: In that case the IfThen or IIF() or somesuch has my absolute top preference, followed by ternary. (and the If .. then expression should be blasted to hell ;) )</p>
<p>Yes a compiler intrinsic could handle that. In the end all three syntaxes are the same code representation anyway: namely an if-node.<br>
The IfThen() intrinsic would be fine with me as well. Let's call this our common ground ;)</p>
<p>Regards,<br>
Sven</p>