Ben Grasset via fpc-pascal <fpc-pascal@lists.freepascal.org> schrieb am
Mi., 6. Nov. 2019, 15:43:

> On Wed, Nov 6, 2019 at 2:01 AM Sven Barth via fpc-pascal <
> fpc-pascal@lists.freepascal.org> wrote:
>
>> A normal if-statements has the same non-evaluation.
>>
>
> Not in the way I meant, though.
>
> 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.
>

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).
The only difference between the if-expression and the if-statement is that
the former can be used as an expression (duh!).

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.
>

Pascal has a strong type safety, thus something like the if-expression
won't be used/allowed to weaken that.

If that means that some things can't be implemented in generics the "easy"
way, then so be it.

Regards,
Sven

>
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to