@Override
    public <B> Compose<F, G, B> zip(Applicative<Function<? super A, ? extends B>, Compose<F, G, ?>> appFn) {
        return new Compose<>(fga.zip(appFn.<Compose<F, G, Function<? super A, ? extends B>>>coerce()
                                             .getCompose().fmap(gFn -> g -> g.zip(gFn))));
    }
@ Override public < B > Compose < F , G , B > zip ( Applicative < Function < ? super A , ? extends B > , Compose < F , G , ? > > appFn ) { return new Compose < > ( fga . zip ( appFn . < Compose < F , G , Function < ? super A , ? extends B > > > coerce ( ) . getCompose ( ) . fmap ( gFn -> g -> g . zip ( gFn ) ) ) ) ; }
{@inheritDoc}