use crate::{HKT3Unbound, Satisfies};
pub trait NaturalIso3<F, G>
where
F: HKT3Unbound,
G: HKT3Unbound,
{
fn to_target<A, B, C>(fa: F::Type<A, B, C>) -> G::Type<A, B, C>
where
A: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
B: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
C: Satisfies<F::Constraint> + Satisfies<G::Constraint>;
fn to_source<A, B, C>(ga: G::Type<A, B, C>) -> F::Type<A, B, C>
where
A: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
B: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
C: Satisfies<F::Constraint> + Satisfies<G::Constraint>;
}