I can't remember what I did in Leaf. Either I triggered a compiler error, or more likely I elided the optional -- you can't have an optional of optional, one was just stripped.
An elision would cause its behavior to deviate from that of a ternary operator, though: if b is null/none then true ? b | 3 would return 3 whereas the ternary operation true ? b : 3 returns null.
true ? b | 3
true ? b : 3
That is the true strength of the ternary operator: to choose between two paths before evaluating them. All binary operators always have to evaluate one of their operands first.
That is true. And I think for that reason it'd make sense to raise an error if the true_value is an optional. It'd lead to a potential ambiguity in what is desired.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.