# 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);