module ProdF where
import CompOps((>+<), (>=^^<))
import Fudget
import SpEither(splitSP)

prodF :: (F a b) -> (F c d) -> F (a, c) (Either b d)
prodF :: forall a b c d. F a b -> F c d -> F (a, c) (Either b d)
prodF F a b
leftw F c d
rightw = (F a b
leftw forall {a} {b} {c} {d}.
F a b -> F c d -> F (Either a c) (Either b d)
>+< F c d
rightw) forall c d e. F c d -> SP e c -> F e d
>=^^< forall {a} {b}. SP (a, b) (Either a b)
splitSP