SICP問題2.20

一つかそれを越える個数の整数をとり、先頭と同じ偶奇数性を持つ引数のリストを返す手続き same-parity

(define (same-parity x . y)
  (define (iter-same-parity same-list rest)
    (if (null? rest)
    same-list
    (if (or (and (even? x) (even? (car rest)))
        (and (not (even? x)) (not (even? (car rest)))))
        (iter-same-parity (append same-list (list (car rest))) (cdr rest))
        (iter-same-parity same-list (cdr rest)))))
  (iter-same-parity (list x) y))

実験

(same-parity 1 2 3 4 5 6 7)
; (1 3 5 7)
(same-parity 2 3 4 5 6 7)
; (2 4 6)

OK