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問も残っている>_<