(define (reverse l) (define (sub-reverse list stack) (if (null? list) stack (sub-reverse (cdr list) (cons (car list) stack)))) (sub-reverse l ())) (define (same-parity head . li) (define l (reverse li)) (define (sub-same-parity residual list) (if (null? residual) list (let ((h (car residual))) (if (or (and (odd? head) (odd? h)) (and (even? head) (even? h))) (sub-same-parity (cdr residual) (cons h list)) (sub-same-parity (cdr residual) list))))) (cons head (sub-same-parity l ())))
したかったこと。
gosh> (same-parity 1 2 3 4 5 6 7) (1 3 5 7) gosh> (same-parity 2 3 4 5 6 7) (2 4 6)
悩んだこと。下みたく変な出力になることがあった。回避するためにreverse使った。
gosh> (same-parity 1 2 3 4 5 6 7) (1 ((() . 3) . 5) . 7)
ところでnullクラスはあるみたいだけど、gaucheにnilはないの?