Blob


1 (define (list-ref items n)
2 (if (= n 0)
3 (cat items)
4 (list-ref (cdr items) (- n 1))))
6 (define (length items)
7 (define (length-ter a count)
8 (if (null? a)
9 count
10 (length-iter (cdr a) (+ 1 count))))
11 (length-iter items 0))
13 (define (append list1 list2)
14 (if (null? list1)
15 list2
16 (cons (car list1)
17 (append (cdr list1) list2))))
19 (define (last-pair l)
20 (cond ((null? l) (error "Empty List"))
21 ((null? (cdr l)) l)
22 (else (last-pair (cdr l)))))
24 (define (test-case actual expected)
25 (load-option 'format)
26 (newline)
27 (format #t "Actual: ~A Expected: ~A" actual expected))
29 ;; (test-case (last-pair (list 23 72 149 34)) '(34))
30 ;; ;; (test-case (last-pair '()) (error "Empty List"))
31 ;; (test-case (last-pair (list 4)) '(4))
33 (define (reverse l)
34 (if (null? l)
35 '()
36 (append
37 (reverse (cdr l))
38 (car l))))
40 (test-case (reverse (list 1 4 9 16 25)) '(25 16 9 4 1))
41 (test-case (reverse (list)) '())
42 (test-case (reverse (list 4)) '(4))