以前の解を見てみた

昨晩エントリでナニした 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 の中のヒトが出してきた解と突き合わせ、ってのも良いかも。