SICP問題2.18
引数としてリストをとり、同じ要素の逆順のリストを返す手続きreverse
(define (reverse items) (define (reverse-iter r-items count) (if (> 0 count) r-items (reverse-iter (append r-items (list (list-ref items count))) (- count 1)))) (reverse-iter (list) (- (length items) 1)))
append, list-ref を使用しない版
(define (reverse x) (define (iter rest result) (if (null? rest) result (iter (cdr rest) (cons (car rest) result)))) (iter x (list)))