public static <A, B, C> List<C> map2( Map2<A, B, C> fn, final Collection<A> as, final Collection<B> bs) { assert as.size() == bs.size(); ArrayList<C> cs = new ArrayList<C>(as.size()); Iterator<A> aiter = as.iterator(); Iterator<B> biter = bs.iterator(); while (aiter.hasNext() && biter.hasNext()) cs.add(fn.apply(aiter.next(), biter.next())); return cs; }
public static <A, B> A foldl(final Map2<A, B, A> f, A a, final Collection<B> xs) { for (B b : xs) a = f.apply(a, b); return a; }
public C apply(B b) { return target.apply(a, b); }