-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2.23.scm
20 lines (18 loc) · 896 Bytes
/
2.23.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;;;; 2.23
;; The procedure `for-each` is similar to map. It takes as arguments a procedure and a list of elements. However, rather than forming a list of the results, `for-each` just applies the procedure to each of the elements in turn, from left to right. The values returned by applying the procedure to the elements are not used at all -- `for-each` is used with procedures that perform an action, such as printing. For example,
;;
;; (for-each (lambda (x) (newline) (display x))
;; (list 57 321 88))
;; 57
;; 321
;; 88
;;
;; The value returned by the call to for-each (not illustrated above) can be something arbitrary, such as true. Give an implementation of for-each.
;;; Answer
(define (for-each func items)
(func (car items))
(if (not (null? (cdr items)))
(for-each func (cdr items))))
;; Test
(for-each (lambda (x) (display x) (newline))
(list 57 321 88))