(eval-one-exp ' (letrec ([fact (lambda (x) (if (zero? x) 1 (* x (fact (- x 1)))))]) (map fact '(0 1 2 3 4 5)))) (eval-one-exp ' (let f ([n 8] [acc 1]) (if (= n 0) acc (f (sub1 n) (* acc n)))))) (eval-one-exp ' (let ([n 5]) (let f ([n n] [acc 1]) (if (= n 0) acc (f (sub1 n) (* acc n)))))) (eval-one-exp ' (letrec ([even? (lambda (n) (if (zero? n) #t (odd? (- n 1))))] [odd? (lambda (m) (if (zero? m) #f (even? (- m 1))))]) (list (odd? 3) (even? 3) (odd? 4) (even? 4)))) (eval-one-exp ' (letrec ([union (lambda (s1 s2) (cond [(null? s1) s2] [(member? (car s1) s2) (union (cdr s1) s2)] [else (cons (car s1) (union (cdr s1) s2))]))] [member? (lambda (sym ls) (cond [(null? ls) #f] [(eqv? (car ls) sym) #t] [else (member? sym (cdr ls))]))]) (union '(a c e d k) '(e b a d c)))) (eval-one-exp ' (letrec ( [largest-of-two (lambda (x y) (cond [(not x) y] [(not y) x] [else (max x y)]))] [largest-in-one-list (lambda (L) (if (null? L) #f (largest-of-two (car L) (largest-in-one-list (cdr L)))))]) (map (lambda (L) ; list of lists (largest-in-one-list (map largest-in-one-list L))) '((() (9 1) (8) (7 6 3)) ((1 3 5) () (4) (2 6 1) (4))))))