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