Lecture 2 Solutions [See ex6solns for solutions to first two problems] Sum-list: (define sum-list (lambda (lst) (if (null? lst) 0 (+ (car lst) (sum-list (cdr lst)))))) ;cdr'ing down Build list of numbers: (define build-list-of-numbers (lambda (start end) (if (> start end) nil (cons start (build-list-of-numbers (+ start 1) end))))) ;cons'ing up Delete Number: (define delnum (lambda (element lst) (if (null? lst) lst (if (= (car lst) element) (cdr lst) (delnum element (cdr lst)))))) Higher Order procedures Integrate: (define square (lambda (x) (* x x))) (define rect (lambda (fx0 fx1 dx) (* fx1 dx))) (define trap (lambda (fx0 fx1 dx) (* (/ (+ fx0 fx1) 2) dx))) (define integrate (lambda (start end dx) (if (>= start end) 0 (+ (trap (square start) (square (+ start dx)) dx) (integrate (+ start dx) end dx))))) ;integrate using functions ;f is the function to integrate ;areaf is the function to use to compute area under the curve (define fintegrate (lambda (f areaf start end dx) (if (>= start end) 0 (+ (areaf (f start) (f (+ start dx)) dx) (fintegrate f areaf (+ start dx) end dx))))) Lines: (define make-line (lambda (m b) (lambda (x) (+ (* m x) b)))) (define diag (make-line 1 0) (diag 3) ;Value: 3 Map: (define map (lambda (proc lst) (if (null? lst) nil (cons (proc (car lst)) (map proc (cdr lst)))))) Filter: (define filter (lambda (pred lst) (if (null? lst) nil (if (pred (car lst)) (cons (car lst) (filter pred (cdr lst))) (filter pred (cdr lst)))))) Nth-prime: (define nth-prime (lambda (n) (list-ref (filter prime? (build-list-of-numbers 2 (expt 2 n))) n)))