use crate::{HKT5Unbound, Satisfies};
pub trait NaturalIso5<F, G>
where
F: HKT5Unbound,
G: HKT5Unbound,
{
fn to_target<V, S, C, E, L>(fa: F::Type<V, S, C, E, L>) -> G::Type<V, S, C, E, L>
where
V: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
S: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
C: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
E: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
L: Satisfies<F::Constraint> + Satisfies<G::Constraint>;
fn to_source<V, S, C, E, L>(ga: G::Type<V, S, C, E, L>) -> F::Type<V, S, C, E, L>
where
V: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
S: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
C: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
E: Satisfies<F::Constraint> + Satisfies<G::Constraint>,
L: Satisfies<F::Constraint> + Satisfies<G::Constraint>;
}