/** * Binds the given function across the parsers with a final join. * * @param f The function to apply to the element of the parsers. * @param pb A given parser to bind the given function with. * @param pc A given parser to bind the given function with. * @param pd A given parser to bind the given function with. * @return A new parser after performing the map, then final join. */ public <B, C, D, E$> Parser<I, E$, E> bind( final Parser<I, B, E> pb, final Parser<I, C, E> pc, final Parser<I, D, E> pd, final F<A, F<B, F<C, F<D, E$>>>> f) { return pd.apply(bind(pb, pc, f)); }
/** * Binds the given function across the parsers with a final join. * * @param f The function to apply to the element of the parsers. * @param pb A given parser to bind the given function with. * @param pc A given parser to bind the given function with. * @param pd A given parser to bind the given function with. * @param pe A given parser to bind the given function with. * @param pf A given parser to bind the given function with. * @return A new parser after performing the map, then final join. */ public <B, C, D, E$, F$, G> Parser<I, G, E> bind( final Parser<I, B, E> pb, final Parser<I, C, E> pc, final Parser<I, D, E> pd, final Parser<I, E$, E> pe, final Parser<I, F$, E> pf, final F<A, F<B, F<C, F<D, F<E$, F<F$, G>>>>>> f) { return pf.apply(bind(pb, pc, pd, pe, f)); }
/** * Binds the given function across the parsers with a final join. * * @param f The function to apply to the element of the parsers. * @param pb A given parser to bind the given function with. * @param pc A given parser to bind the given function with. * @param pd A given parser to bind the given function with. * @param pe A given parser to bind the given function with. * @param pf A given parser to bind the given function with. * @param pg A given parser to bind the given function with. * @param ph A given parser to bind the given function with. * @return A new parser after performing the map, then final join. */ public <B, C, D, E$, F$, G, H, I$> Parser<I, I$, E> bind( final Parser<I, B, E> pb, final Parser<I, C, E> pc, final Parser<I, D, E> pd, final Parser<I, E$, E> pe, final Parser<I, F$, E> pf, final Parser<I, G, E> pg, final Parser<I, H, E> ph, final F<A, F<B, F<C, F<D, F<E$, F<F$, F<G, F<H, I$>>>>>>>> f) { return ph.apply(bind(pb, pc, pd, pe, pf, pg, f)); }
/** * Binds the given function across the parsers with a final join. * * @param f The function to apply to the element of the parsers. * @param pb A given parser to bind the given function with. * @return A new parser after performing the map, then final join. */ public <B, C> Parser<I, C, E> bind(final Parser<I, B, E> pb, final F<A, F<B, C>> f) { return pb.apply(map(f)); }
/** * Binds the given function across the parsers with a final join. * * @param f The function to apply to the element of the parsers. * @param pb A given parser to bind the given function with. * @param pc A given parser to bind the given function with. * @return A new parser after performing the map, then final join. */ public <B, C, D> Parser<I, D, E> bind( final Parser<I, B, E> pb, final Parser<I, C, E> pc, final F<A, F<B, F<C, D>>> f) { return pc.apply(bind(pb, f)); }