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 = forall {a}. Either a a -> a
stripEither forall {a} {ho} {hi}. (a -> ho) -> F hi a -> F hi ho
`postMapHigh` 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 forall {c} {ho} {hi}. F c ho -> SP hi c -> F hi ho
`preProcessHigh` forall {b}. SP b (Either b b)
toBothSP