result<Ok, Error> from_maybe(const Error& err, const maybe<Ok>& maybe) { if (is_just(maybe)) return ok<Ok, Error>(unsafe_get_just(maybe)); else return error<Ok, Error>(err); }
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))); } }