(unit/sig (good-case bad-case short1 short2 med1 med2 long1 long2 min-fast min-slow) (import plt:userspace^) (define nums-up (lambda (n) (build-list n (lambda (i) i)))) (define nums-down (lambda (n) (build-list n (lambda (i) (- n i))))) (define good-case nums-up) (define bad-case nums-down) (define short1 (good-case 10)) (define short2 (bad-case 10)) (define med1 (good-case 20)) (define med2 (bad-case 20)) (define long1 (good-case 22)) (define long2 (bad-case 22)) ;; (min-slow nlon) ;; nlon is a non-empty list of numbers ;; Return the smallest number in the list ;; (define min-slow (lambda (lon) (cond [(null? (cdr lon)) (car lon)] [else (if (< (car lon) (min-slow (cdr lon))) (car lon) (min-slow (cdr lon)))]))) (define min-fast (lambda (lon) (cond [(null? (cdr lon)) (car lon)] [else (local [(define min-of-rest (min-fast (cdr lon)))] (if (< (car lon) min-of-rest) (car lon) min-of-rest))]))) )