(define even
  (fun ([x Int] [-> Bool])
    (if (= x 0)
        true
        (if (= x 1)
            false
            (odd (- x 1))))))








(define odd
  (fun ([x Int] [-> Bool])
    (if (= x 0)
        false
        (if (= x 1)
            true
            (even (- x 1))))))








(even 10)  -- true
(even 11)  -- false
(odd 10)   -- false
(odd 11)   -- true






(define fact
  (fun ([x Int] [-> Int])
    (if (= x 0) 1 (* x (fact (- x 1))))))



(fact 5)                -- 120