;; Sample pre-defined Scheme operations on booleans: (define myboolean? (lambda (x) (or (eq? x #t) (eq? x #f)))) (define mynot (lambda (x) (if x #f #t))) (define mynot-typechecked (lambda (x) (if (boolean? x) (if x #f #t) (display "Type error")))) ;; e.g: (myboolean? (= 0 2)) (mynot (myboolean? mynot)) ;; Booleans in pure lambda calculus (normal order) (define mytrue (lambda (x y) x)) (define myfalse (lambda (x y) y)) (define myif (lambda (x t f) (x t f))) ;; e.g.: (myif mytrue 4 5) (myif myfalse 4 5) ;; Sample pre-defined Scheme operations on numbers (define my* (lambda (x y) (if (= x 0) 0 (+ y (my* (- x 1) y))))) ;; Sample pre-defined Scheme operations on characters (define mychar-whitespace? (lambda (x) (or (char=? x #\space) (char=? x #\tab) (char=? x #\newline)))) ;; Sample pre-defined Scheme operations on lists (define myappend (lambda (x y) (if (null? x) y (cons (car x) (myappend (cdr x) y)))))