問題 2.20

(define (same-parity s . l)
  (define (same-parity-iter ss ll)
    (cond ((null? ll) null)
          ((= (remainder (car ll) 2) ss)
           (cons (car ll) (same-parity-iter ss (cdr ll))))
          (else (same-parity-iter ss (cdr ll)))))
  (cons s (same-parity-iter (remainder s 2) l)))

;(same-parity 2 3 5 7 10 13 16 15)
;-> (2 10 16)
;(same-parity 3 5 7 10 13 16 15)
;-> (3 5 7 13 15)

;できた。
;この書き方はよくつかう。
;lispではどうやるのかとおもっていたが、これで自由度がまた増す。