# MATH show map function for applying a function across the elements of a list
[
hear] (define map /
         lambda (p lst)
          (if (> (list-length / lst) 0)
            (prepend
              (p (head / lst))
              (map (p) (tail / lst)))
            (vector)));

[hear] (= (map (? x / * (x) 2) (vector 7 8 9))
           (vector 14 16 18));

[hear] (= (map (? x / * (x) 2) (vector 19 7 13 10))
           (vector 38 14 26 20));

[hear] (= (map (? x / * (x) 2) (vector 4 10 7 1 2))
           (vector 8 20 14 2 4));

[hear] (= (map (? x / * (x) 2) (vector 3 18 16 7 9 13))
           (vector 6 36 32 14 18 26));

[hear] (= (map (? x 42) (vector 5 16 15))
           (vector 42 42 42));

[hear] (= (map (? x 42) (vector 13 9 7 14))
           (vector 42 42 42 42));

[hear] (= (map (? x 42) (vector 1 16 3 19 15))
           (vector 42 42 42 42 42));

[hear] (= (map (? x 42) (vector 15 5 2 12 16 14))
           (vector 42 42 42 42 42 42));

[hear] (define crunch /
         lambda (p lst)
          (if (>= (list-length / lst) 2)
            (p (head / lst) (crunch (p) (tail / lst)))
            (if (= (list-length / lst) 1)
              (head /
               lst)
              (undefined))));

[hear] (= (crunch (+) (vector 1 8 18)) 27);

[hear] (= (crunch (+) (vector 3 11 0 5)) 19);

[hear] (= (crunch (+) (vector 7 15 6 11 9)) 48);

[hear] (= (crunch (+) (vector 18 14 19 4 5 17)) 77);