FUNCTIONS Mathematical notation: f(y) = 1 + y Church's lambda notation: (lambda (y) (+ 1 y)) LISP: (define add1 (y) (+ 1 y)) Scheme (our version): (set add1 (lambda (y) (+ 1 y))) FUNCTIONS AS VALUES -> (sort2 7 5 (lambda (x y) (> x y))) (7 5) (set compose (lambda (f g) (lambda (x) (f (g x))))) (set cadr (compose car cdr)) (cadr '(1 2 3)) == ((compose car cdr) '(1 2 3)) == (((lambda (f g) (lambda (x) (f (g x)))) car cdr) '(1 2 3)) == ((lambda (x) (car (cdr x))) '(1 2 3)) == (car (cdr '(1 2 3))) == (car '(2 3)) SCOPE (set addx (lambda (x) (lambda (x) (+ x x)))) (set addx3 (addx 3)) -> (addx3 1) 2 ; this is NOT a mistake, ; it shows the scope (set s 10) (set f (lambda (x) (+ x s))) (set g (lambda (s) (f (+ s 11)))) (g 5) ;Value: 26