maybe<TOut> first_match_by(F f, const ContainerIn1& xs, const ContainerIn2& ys) { const auto maybe_idx = first_match_idx_by(f, xs, ys); if (is_nothing(maybe_idx)) { return nothing<TOut>(); } else { const auto idx = maybe_idx.unsafe_get_just(); return just(std::make_pair( elem_at_idx(idx, xs), elem_at_idx(idx, ys))); } }
typename Container::value_type maximum_on(F f, const Container& xs) { return elem_at_idx(maximum_idx_on(f, xs), xs); }
typename Container::value_type maximum_on(F f, const Container& xs) { internal::trigger_static_asserts<internal::unary_function_tag, F, typename Container::value_type>(); return elem_at_idx(maximum_idx_on(f, xs), xs); }