@Override public Option<A> foreach(Function<? super A, Void> f) { f.apply(a); return this; }
@Override public Boolean apply(A a) { for (Function<A, Boolean> f : fs) { if (!f.apply(a)) return false; } return true; } };
@Override public ListMonadic<A> each(Function<? super A, Void> e) { for (A a : as) e.apply(a); return this; }
@Override public A apply(A a) { A dc = a; for (Function<? super A, ? extends A> f : fs) { dc = f.apply(dc); } return dc; } };
@Override public boolean exists(Function<? super A, Boolean> p) { for (A a : as) { if (p.apply(a)) return true; } return false; }
@Override public boolean exists(Function<? super A, Boolean> p) { for (A a : as) { if (p.apply(a)) return true; } return false; }
@Override public ListMonadic<A> filter(Function<? super A, Boolean> p) { final List<A> target = newListBuilder(); while (as.hasNext()) { A a = as.next(); if (p.apply(a)) { target.add(a); } } return mlist(target); }
@Override public Option<C> apply(A a) { return f.apply(a).map(g); } };
@Override public <B> ListMonadic<B> fmap(Function<? super A, ? extends B> f) { final List<B> target = newListBuilder(as.length); for (A a : as) target.add(f.apply(a)); return mlist(target); }
@Override public <B> ListMonadic<B> bind(Function<? super A, ? extends Iterable<B>> f) { final List<B> target = newListBuilder(); while (as.hasNext()) appendTo(target, f.apply(as.next())); return mlist(target); }
/** * Partition a list after some predicate <code>group</code> into <code>map</code>. */ public static <K, V, X> Multimap<K, V> makeMap(Multimap<K, V> map, Iterable<? extends X> values, Function<? super X, Tuple<K, V>> group) { for (X value : values) { final Tuple<K, V> entry = group.apply(value); map.put(entry.getA(), entry.getB()); } return map; }
@Override public <B> ListMonadic<B> bind(Function<? super A, ? extends Iterable<B>> f) { final List<B> target = newListBuilder(); for (A a : as) appendTo(target, f.apply(a)); return mlist(target); }
@Override public Option<A> find(Function<? super A, Boolean> p) { for (A a : as) { if (p.apply(a)) return some(a); } return none(); }
/** Run <code>f</code> if there is at least one bundle matching the given prefixes. */ private Response withBundles(List<String> prefixes, Function<List<BundleInfo>, Response> f) { final List<BundleInfo> info = getDb().getBundles(toArray(String.class, prefixes)); if (info.size() > 0) { return f.apply(info); } else { return notFound("No bundles match one of the given prefixes"); } } }
@Override public Option<A> find(Function<? super A, Boolean> p) { for (A a : forc(as)) { if (p.apply(a)) return some(a); } return none(); }
@Override protected A calc() { final Tuple<B, Object> mChange = master.change(); if (ne(mChange.getB(), change)) { a = f.apply(mChange.getA()); change = mChange.getB(); } return a; } };