1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
(fn map [f l] `(icollect [i# v# (ipairs ,l)] (,f i# v#))) (fn filter [f l] `(icollect [i# v# (ipairs ,l)] (if (,f i# v#) v# nil))) (fn reduce [f l s] `(accumulate [r# ,s i# v# (ipairs ,l)] (,f i# v# r#))) {: map : filter : reduce}