 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