~$ racket
Welcome to Racket v7.2.0.6.
> (define True (lambda (t f) (t)))
> (define False (lambda (t f) (f)))
> (define If (lambda (b tr fa) (b tr fa)))
> (define P (lambda (x)
(If x
(lambda () (display "It was true!"))
(lambda () (display "It was false!")))))
> (P True)
It was true!
> (P False)
It was false!
>
Seen differently, it's also close to the mathematical notation of the lambda calculus.To learn about the lambda calculus, check out chapter 5 of "Types and Programming Languages", Benjamin C. Pierce, MIT Press 2002. You might also get something out of "Semantics Engineering with PLT Redex", Felleisen, Findler & Flatt, MIT Press 2009.