以前の解を見てみた
昨晩エントリでナニした reverse の実装ですが、以下。
(define (reverse l) (let f ((l l) (result '())) (if (null? l) result (f (cdr l) (cons (car l) result)))))
昨晩の検証の中で頭ではイメージできてたんですが、上記な手続きにできんかった。やっぱり簡単に書けるんじゃないの。
もひとつ
問題 2.20 の実装もこうした方が良いんじゃね? みたいな話になってたんですが、昔ひり出した解が以下な模様。
(define (same-parity x . y) (define (f proc l result) (if (null? l) result (f proc (cdr l) (if (proc (car l)) (append result (list (car l))) result)))) (if (odd? x) (f odd? y (list x)) (f even? y (list x))))
昨晩色々弄くりマワした記憶があるんですが、それともちょっと違う実装な気がしてます。
よく考えたら
以前の取り組みは答え合わせしてないので、sw@mac の中のヒトが出してきた解と突き合わせ、ってのも良いかも。