use crate::profunctor::Profunctor;
pub trait Strong: Profunctor {
fn first<A, B, C>(pab: Self::P<A, B>) -> Self::P<(A, C), (B, C)>
where
A: 'static,
B: 'static,
C: 'static;
fn second<A, B, C>(pab: Self::P<A, B>) -> Self::P<(C, A), (C, B)>
where
A: 'static,
B: 'static,
C: 'static;
}