(define letter-to-number (lambda (letter) (if (eq? letter 'A) 4.0 (if (eq? letter 'B+) 3.5 3.0)))) (letter-to-number 'A) (letter-to-number 'B+) (letter-to-number 'B) (define letter-to-number (lambda (letter) (cond [(eq? letter 'A) 4.0] [(eq? letter 'B+) 3.5] [else 3.0]))) (define letter-to-number (lambda (letter) (case letter [(A) 4.0] [(B+) 3.5] [else 3]))) (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-so-far rest-of-list) (if (null? rest-of-list) largest-so-far (largest-in-nonempty (max largest-so-far (car rest-of-list)) (cdr rest-of-list))))) (largest-in-list '()) (largest-in-list '(3 6 2 4)) (largest-in-list '(-4 -1)) (define make-adder (lambda (n) (lambda (m) (+ n m)))) (make-adder 5) (define add5 (make-adder 5)) (add5 6) ((make-adder 5) 6) (((lambda (n) (lambda (m) (+ n m))) 5) 6)