Programming languages need an extra syntax operator: a “binary truth operator”.
We all know the ternary operator:
value = if_this_is_true ? do_this : else_do_this;
Let’s look at an example of the ternary operator:
firstName = "John" surname = "Doe" age = 40 fullName = firstName + " " + surname + (age > 0 ? "(" + age + ")" : null)
The result is:
John Doe (40)
By introducing a binary truth operator, we can imply that the false result is null, and make the statement more compact to read and comprehend.
A possible syntax for the binary truth operator is ?=, for example:
if_this_is_true ?= do_this;
For example:
fullName = firstName + " " + surname + (age ?= "(" + age + ")")
The result is still:
John Doe (40)
A “binary false operator” is also possible, using the syntax ?<>:
age = 0 fullName = firstName + " " + surname + (age ?<> "(Unknown age)")
The result would be:
John Doe (Unknown age)
Note that the following operators, while related to the binary truth operator, would not give the same result:
- Null coalescing operator: ??
- Problem: Only works if an object is null, and the operator doesn’t operate on boolean values
- Null propagation operator: ?.
- Problem: Only works if an object is not null, and the operator doesn’t operate on boolean values
- Short-circuit AND expression: if_this_is_true && do_this
- Problem: In statically-typed languages, the expression results in a boolean value, and not an object, like the binary truth operator would
- Short-circuit OR expression: !if_this_is_false || do_this
- In statically-typed languages, the expression results in a boolean value, and not an object, like the binary truth operator would
- If and only if: iff
- The iff operator is a candidate, and could be adapted for the binary truth operator