SICP問題2.23
(define (for-each proc items) (proc (car items)) (if (null? (cdr items)) #t (for-each proc (cdr items))))
実験
(for-each (lambda (x) (newline) (display x)) (list 57 321 88)) ; ; 57 ; 321 ; 88#t
普通のリストはOK。でもitemsが空リストの場合、ダメだなぁ。ということでカンニング。
(define (for-each func items) (cond ((null? items) #t) (else (func (car items)) (for-each func (cdr items)))))わざわざ cond を使ったのは、else 節で複数の式を評価させる必要があるから。
http://sicp.naochan.com/memo.pl?p=%CC%E4%C2%EA2.23
なるほど、ifとcondの違いが、こういう場合に利いてくるということか。元のページ見るとbegin使えばifでも書けるということも書かれていますね。奥が深い。