ANSI Common Lisp入門? lispの世界へようこそ 練習問題3

carとcdrを使って、リストの4番目の要素を返す関数を定義せよ。

4を渡したときにcarとcdrを使って、リストの4番目の要素を返す関数を返す関数を定義すればいいのかなー?
これは上の2つより簡単そうですね。

(define (repeat$ n f) 
  (apply compose (make-list n f)))
(define (nth$ n) 
  (compose car (repeat$ (- n 1) cdr)))

(define my-forth (nth$ 4))
(my-forth (iota 6 1)) ; => 4
(let1 ai (char->integer #\a)
  (my-forth (list-tabulate 4 (lambda (x) (integer->char (+ ai x))))))
 ; => #\d

まだあと6問も残っている>_<