リストを逆順にする


Tags: リスト, R6RS

リストを逆順にするには reverse 手続きを使う。

(import (rnrs))

(reverse '(1 2 3 4)) ; => (4 3 2 1)
(reverse '()) ; => ()

Scheme では計算結果をリストに cons し逆順に保持しておき、最後に reverse するというイディオムがよく使われる。

(import (rnrs))

(define (map1 proc xs)
  (let loop ((xs xs)
             (rs '()))
    (if (null? xs)
        (reverse rs)
        (loop (cons (proc (car xs))) (cdr xs)))))