<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Ben Grasset via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>> schrieb am Mi., 6. Nov. 2019, 15:43:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">On Wed, Nov 6, 2019 at 2:01 AM Sven Barth via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto">A normal if-statements has the same non-evaluation.</div></div></blockquote><div><br></div><div>Not in the way I meant, though. </div><div><br></div><div>Like, I thought the difference between "normal if" and "ternary if" was supposed to be the same as the difference between the existing IfThen() function and the intrinsic version of IfThen(), on which you based the "if-then-else" syntax I think. </div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">No. The difference between the currently provided IfThen<> generic is the same in regards to evaluation to the rejected IfThen intrinsic, an if-expression and an if-statement: All four typecheck their branches, but only the later three don't execute the statements in the branch that is not taken (and also have a branch optimised away if the condition is const).</div><div dir="auto">The only difference between the if-expression and the if-statement is that the former can be used as an expression (duh!). </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div>The point being that the type-checking is neither useful or necessary in scenarios where the branch being evaluated is statically known to be unreachable ahead of time.</div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Pascal has a strong type safety, thus something like the if-expression won't be used/allowed to weaken that. </div><div dir="auto"><br></div><div dir="auto">If that means that some things can't be implemented in generics the "easy" way, then so be it. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>