(mac mapeach (var . rest) (if (acons var) (with (vals (firstn (len var) rest) body (nthcdr (len var) rest)) `(map (fn ,var ,@body) ,@vals)) (let (val . body) rest `(map (fn (,var) ,@body)) ,val))))