map-with

Um eine Funktion auf alle Elemente einer Liste anzuwenden und die entstehenden Resultate wiederum als Liste zu erhalten, benutzt man map-with.

mapcar ist der historische Name von map-with.

map-with erwartet zwei Argumente und wertet beide aus. Bei dem ersten Argument muss es sich um eine Funktion handeln, die ihrerseits ein Argument akzeptiert. Das zweite Argument muss eine Liste sein.

> (map-with (lambda (x) (+ x 1)) (quote (2 3 4)))
(3 4 5)


Soll eine Funktion auf die Elemente von zwei Listen angewendet werden, verwendet man zip-with.

Die Funktion map-with basiert auf if, null?, first, rest und cons:

(setq map-with
  (lambda (f l)
    (if
      (null? l)
      nil
      (cons
        (f (first l))
        (map-with f (rest l))))))