Next: Folding of Lists, Previous: Searching Lists, Up: Lists [Contents][Index]
Procedure must be a procedure taking as many arguments as there
are lists. If more than one list is given, then they must
all be the same length. map
applies procedure element-wise
to the elements of the lists and returns a list of the results, in
order from left to right. The dynamic order in which procedure is
applied to the elements of the lists is unspecified; use
for-each
to sequence side effects.
(map cadr '((a b) (d e) (g h))) ⇒ (b e h)
(map (lambda (n) (expt n n)) '(1 2 3 4)) ⇒ (1 4 27 256)
(map + '(1 2 3) '(4 5 6)) ⇒ (5 7 9)
(let ((count 0))
(map (lambda (ignored)
(set! count (+ count 1))
count)
'(a b c))) ⇒ unspecified
Deprecated, use fold-right
instead. Equivalent to
(fold-right (lambda (e1 e2 … acc) (cons* (proc e1) (proc e2) … acc)) knil list1 list2 …)
Similar to map
except that the results of applying
procedure to the elements of lists are concatenated
together by append
rather than by cons
. The following
are equivalent, except that the former is more efficient:
(append-map procedure list1 list2 …) (apply append (map procedure list1 list2 …))
Deprecated, use fold-right
instead. Equivalent to
(fold-right (lambda (e1 e2 … acc) (append (proc e1) (proc e2) … acc)) knil list1 list2 …)
Similar to map
except that the results of applying proc
to the elements of lists are concatenated together by
append!
rather than by cons
. The following are
equivalent, except that the former is more efficient:
(append-map! proc list list …) (apply append! (map proc list list …))
Deprecated, use fold-right
instead. Equivalent to
(fold-right (lambda (e1 e2 … acc) (append! (proc e1) (proc e2) … acc)) knil list1 list2 …)
The arguments to for-each
are like the arguments to map
,
but for-each
calls procedure for its side effects rather
than for its values. Unlike map
, for-each
is guaranteed
to call procedure on the elements of the lists in order from
the first element to the last, and the value returned by for-each
is unspecified.
(let ((v (make-vector 5))) (for-each (lambda (i) (vector-set! v i (* i i))) '(0 1 2 3 4)) v) ⇒ #(0 1 4 9 16)
Applies predicate across the lists, returning true if predicate returns true on any application.
If there are n list arguments list1 … listn, then predicate must be a procedure taking n arguments and returning a boolean result.
any
applies predicate to the first elements of the
list parameters. If this application returns a true value,
any
immediately returns that value. Otherwise, it iterates,
applying predicate to the second elements of the list
parameters, then the third, and so forth. The iteration stops when a
true value is produced or one of the lists runs out of values; in the
latter case, any
returns #f
. The application of
predicate to the last element of the lists is a tail call.
Note the difference between find
and any
—find
returns the element that satisfied the predicate; any
returns
the true value that the predicate produced.
Like every
, any
’s name does not end with a question
mark—this is to indicate that it does not return a simple boolean
(#t
or #f
), but a general value.
(any integer? '(a 3 b 2.7)) => #t (any integer? '(a 3.1 b 2.7)) => #f (any < '(3 1 4 1 5) '(2 7 1 8 2)) => #t
Applies predicate across the lists, returning true if predicate returns true on every application.
If there are n list arguments list1 … listn, then predicate must be a procedure taking n arguments and returning a boolean result.
every
applies predicate to the first elements of the
list parameters. If this application returns false,
every
immediately returns false. Otherwise, it iterates,
applying predicate to the second elements of the list
parameters, then the third, and so forth. The iteration stops when a
false value is produced or one of the lists runs out of values.
In the latter case, every
returns the true value produced by
its final application of predicate. The application of
predicate to the last element of the lists is a tail call.
If one of the lists has no elements, every
simply returns #t
.
Like any
, every
’s name does not end with a question
mark—this is to indicate that it does not return a simple boolean
(#t
or #f
), but a general value.
Next: Folding of Lists, Previous: Searching Lists, Up: Lists [Contents][Index]