問題2-23

mapに似ているfor-each手続きです。今日は気力が尽きてきたので、上手くいかなかったパターンと、上手くいっているっぽいパターンをアップするだけにします。

(define (for-each proc items)
  (if (null? items)
      '()
      ((proc (car items))
       (for-each proc (cdr items)))))

これでは上手くいきませんでした。最後までdisplayはされますが、その後でエラーが発生してしまいます。
そこで、以下のように書き直しました。

(define (for-each proc items)
  (proc (car items))
  (if (null? (cdr items))
      '()
      (for-each proc (cdr items))))
   
(for-each (lambda (x) (newline) (display x))
          (list 57 321 88))

手続きに入った瞬間にprocを実行するような処理です。しかし、これだと最後にnilが返されてしまいます。これがこの問題の主旨に合っているかどうかはまでは、突き詰めることができませんでした。