use crate::profunctor::Profunctor;
pub trait Choice: Profunctor {
fn left<A, B, C>(pab: Self::P<A, B>) -> Self::P<Result<A, C>, Result<B, C>>
where
A: 'static,
B: 'static,
C: 'static;
fn right<A, B, C>(pab: Self::P<A, B>) -> Self::P<Result<C, A>, Result<C, B>>
where
A: 'static,
B: 'static,
C: 'static;
}