module ParF(parF) where
--import Fudget
import EitherUtils(stripEither)
import CompF(compF)
--import SerCompF(serCompF)
import CompFfun(postMapHigh,preProcessHigh)
import SpEither(toBothSP)

-- Quick (i.e. slow) implementation
parF :: F c ho -> F c ho -> F c ho
parF F c ho
f1 F c ho
f2 = Either ho ho -> ho
forall p. Either p p -> p
stripEither (Either ho ho -> ho)
-> F (Either c c) (Either ho ho) -> F (Either c c) ho
forall a ho hi. (a -> ho) -> F hi a -> F hi ho
`postMapHigh` F c ho -> F c ho -> F (Either c c) (Either ho ho)
forall a b c d. F a b -> F c d -> F (Either a c) (Either b d)
compF F c ho
f1 F c ho
f2 F (Either c c) ho -> SP c (Either c c) -> F c ho
forall c ho hi. F c ho -> SP hi c -> F hi ho
`preProcessHigh` SP c (Either c c)
forall b. SP b (Either b b)
toBothSP