Looks like the object-oriented version of what's possible in the lambda calculus:
true = lambda(x,y) -> x
false = lambda(x,y) -> y
if = lambda(pred,then,else) -> pred(then,else)