Church-encoded booleans are: - `true` ≡ λ x, y . x - `false` ≡ λ x, y . y At type-checking, the `bool` type can be retained and made a subtype of those lambdas, i.e.: `bool` ≤ ∀ α . α → (α → α) At evaluation, `BooleanValue` can be made a subclass of `Closure`.