Petite Chez Scheme Version 9.5 Copyright 1984-2017 Cisco Systems, Inc. > (define letter-to-number (lambda (letter) (cond [(eq? letter 'A) 4.0] [(eq? letter 'B+) 3.5] [else 3.0]))) > (letter-to-number 'A) 4.0 > (letter-to-number 'B+) 3.5 > (letter-to-number 'B) 3.0 > (define letter-to-number (lambda (letter) (case letter [(A) 4.0] [(B+) 3.5] [else 3.0]))) > (letter-to-number 'A) 4.0 > (letter-to-number 'B+) 3.5 > (letter-to-number 'B) 3.0 > (define largest-in-list (lambda (lon) (if (null? lon) (errorf 'largest-in-list "empty list") (largest-in-nonempty (car lon) (cdr lon))))) > (define largest-in-nonempty (lambda (largest-seen unseen) (if (null? unseen) largest-seen (largest-in-nonempty (max largest-seen (car unseen)) (cdr unseen))))) > (largest-in-list '()) Exception in largest-in-list: empty list > (define make-adder (lambda (m) (lambda (n) (+ n m)))) > make-adder # > (define add5 (make-adder 5)) > add5 # > (add5 6) 11 > ((make-adder 5) 6) 11 > (((lambda (m) (lambda (n) (+ n m))) 5) 6) 11 > (define f (lambda (a b) (+ (* 2 a) b))) > (f 6 7) 19 > (let ([a 7] [b 6]) (+ a b)) 13 > (let ([a 7] [b (+ a 2)]) (+ a b)) Exception: variable a is not bound > (let* ([a 7] [b (+ a 2)]) (+ a b)) 16 > (define a 12) > (let ([a 7] [b (+ a 2)]) (+ a b)) 21 > a 12 >