연습문제 2.23, for-each 프로시저는 map처럼 프로시저와 리스트를 하나씩 인자로 받지만, 결과 값으로 리스트를 내놓는 게 아니라, 리스트의 원소마다 프로시저를 적용한 결과만 내놓는다. 원소마다 프로시저를 적용했을 때 얻은 값은 아예 쓰지 않는다. 그러므로 리스트의 원소를 차례대로 화면에 찍는 등 똑같은 명령을 처리해야 하는 프로시저를 짜는 데 쓴다. 아래는 그 보기다.
없으니까 대충 대충 정의해서 썼다.
(for-each (lambda (x) (newline) (display x))이상하다. 당연히 progn 이 있을 걸로 생각했는데 왜 없다고 나오지 -_-;
(list 57 321 88))
없으니까 대충 대충 정의해서 썼다.
(define (for-each f l)이렇게 하면 아래와 같이 결과가 나온다.
(define (progn x . y) '())
(if (null? l)
'()
(progn (f (car l))
(for-each f (cdr l)))))
> (for-each (lambda (x) (display x) (newline))
(list 57 321 88))
57
321
88
()




덧글