pub fn mapreduce<I, T, J, F>(vec: I, indicator: J, sequence: F) -> Option<T> where I: IntoIterator, I: Sized, I::IntoIter: Iterator<Item = I::Item>, J: FnMut(I::Item) -> T, F: FnMut(T, T) -> T,