# Church encodingTRUE=T:= λab. aFALSE=F:= λab. bNOT::Bool->Boolbcs ::Bool->Bool->BoolNOT:= λ p t f .p f t# p and q are Booleans, so they must both be T for AND to be T.# t arg repr true arg and f false, so we can explicitly pass them inAND:= λ p q t f .p (q t f) f
theme
λ p q t f . p (q t f) fλ a b . a// Church encodingλab. aTRUE = λab. aFALSE := λab. bNOT :: Bool -> Boolbcs :: Bool -> Bool -> BoolNOT := λ p t f . p f t# p and q are Booleans, so they must both be T for AND to be T.# t arg repr true arg and f false, so we can explicitly pass them inAND := λ p q t f . p (q t f) f