問題2.20 – SICP(計算機プログラムの構造と解釈)その37
2008年12月13日
ドット末尾記法(dotted-tail notation)
ドットの後にあるパラメータはリストになる。
(define (f x y . z) (print x y z)) (f 1 2 3 4 5) gosh> 12(3 4 5) (f 1 2) gosh> 12() (define (g . w) (print w)) (g 1 2 3 4 5) gosh> (1 2 3 4 5) (g) gosh> () ;lambda を使って定義する。 (define f (lambda (x y . z) print x y z)) (f 1 2 3 4 5) gosh> (3 4 5) (define g (lambda w print w)) (g 1 2 3 4 5) gosh> (1 2 3 4 5)
問題2.20
(define (same-parity x . y) (define (iter result items) (if (null? items) result (cond ((and (even? x) (even? (car items))) (iter (append result (list (car items))) (cdr items))) ((and (not (even? x)) (not (even? (car items)))) (iter (append result (list (car items))) (cdr items))) (else (iter result (cdr items)))))) (iter (list x) y)) (same-parity 1 2 3 4 5 6 7) gosh> (1 3 5 7) (same-parity 2 3 4 5 6 7) gosh> (2 4 6)
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542