λ calculus Boolean

LA home
Computing
FP
 λ-calc.
  Intro
  Syntax
  Examples
   Ints
   Bools
   Lists(1)
   arithmetic
   Y (lazy)
   Y (strict)
   Lists(2)
   Trees
   Primes(1)
   Fibonacci(1)
   Unique
   Hamming#s
   Composites
   Fibonacci(2)
   Thue seqs.
   Edit-dist.
   Bools
Boolean values can be defined in the λ calculus, although they are often "built into" programming languages based on λ calculus.
let
  TRUE  = lambda a. lambda b. a,
  FALSE = lambda a. lambda b. b

in let
  AND   = lambda p. lambda q. p q FALSE,
  OR    = lambda p. lambda q. p TRUE q,
  NOT   = lambda p. lambda a. lambda b. p b a,
  IF    = lambda p. lambda a. lambda b. p a b,
  EQ    = lambda x. lambda y.
            if x = y then TRUE else FALSE

in {simple test:}
  IF TRUE                   1  (-1) ::
  IF FALSE                (-2)   2  ::
  IF (OR  FALSE TRUE)       3  (-3) ::
  IF (AND FALSE TRUE)     (-4)   4  ::
  IF (NOT FALSE)            5  (-5) ::
  IF (EQ 1 1)               6  (-6) ::
  IF (OR (EQ 1 2) (EQ 2 2)) 7  (-7) ::
  nil

{ Define Boolean From Scratch. }

The example defines 'TRUE', 'FALSE', 'AND', 'OR', etc. from first principles but defines 'EQ' using the built in '=' which is of course a cheat (to keep the example small). However, the section on integers shows how to define 'ISZERO' which could be used to define 'EQ' from first principles.




Also see [Ints] and [Lists].

www #ad:

↑ © L. Allison, www.allisons.org/ll/   (or as otherwise indicated).
Created with "vi (Linux)",  charset=iso-8859-1,   fetched Tuesday, 19-Mar-2024 02:50:20 UTC.

Free: Linux, Ubuntu operating-sys, OpenOffice office-suite, The GIMP ~photoshop, Firefox web-browser, FlashBlock flash on/off.