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