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

- Problem: Only works if an
- Null propagation operator: ?.
- Problem: Only works if an
**object**is not null, and the operator doesn’t operate on boolean values

- Problem: Only works if an
- 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

- The