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

prodF :: (F a b) -> (F c d) -> F (a, c) (Either b d)
prodF :: 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 F a b -> F c d -> F (Either a c) (Either b d)
forall a b c d. F a b -> F c d -> F (Either a c) (Either b d)
>+< F c d
rightw) F (Either a c) (Either b d)
-> SP (a, c) (Either a c) -> F (a, c) (Either b d)
forall c d e. F c d -> SP e c -> F e d
>=^^< SP (a, c) (Either a c)
forall a b. SP (a, b) (Either a b)
splitSP