On Thu, 8 Oct 2015, Mark Morgan Lloyd wrote:

Michael Van Canneyt wrote:
On Thu, 8 Oct 2015, Sven Barth wrote:

Am 08.10.2015 19:10 schrieb "Ralf Quint" <freedos...@gmail.com>:

On 10/8/2015 9:54 AM, Sven Barth wrote:


I had the idea to implement inline-if as well. I think the syntax I
selected is derived from Oxygene, but it looks very Pascal and shouldn't
break anything:

left := if expr1 then expr2 else expr3;

Thereby expr1 returns Boolean and expr2 determines the type of the whole
inline-if, thus expr3 needs to be compatible to expr2.


Sorry, but that doesn't "look Pascal" at all, and is anything but easily
understandable, specially given the possible complexity of expr[1,2,3]...

And you think C's ternary would be more Pascal? Also you need /some/
definition of what defines the type no whether what syntax you choose (in
addition expr1 is the same as in normal ifs, so it's only the "complexity"
of expr2 and expr3). And no, "the left side" is not the Pascal answer
either.

Actually, yes I think C's or Javascript's ternary is better suited.

Let me explain. If I see

If expr1 then expr2 else expr3

it says 'statement' to me. But

a ? b : c;

Says "expression" to me.

So

left := a ? b : c;

OK. So presumably, since false < true, b is executed if a is false and c is executed if it's true? >:-)

Why would anyone in the world think that ?

Many pascal programmers do not even know that false<true and ord(false)=0 and 
ord(true)=1,
or even that a boolean is equivalent to an enumerated.

The number of times I've encountered

if expr = true then

is staggering, and tends to make me very depressed...

By contrast, many people these days have encountered some C-ish language and do know ternary expressions.


After all, while concise C-style operators work well in expressions this is not a simple expression where all components are evaluated:

Of course it is the same. Boolean expressions by default are shortcut-evaluated. So the ternary is completely equivalent to that and should not present any difficulties whatsoever.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to