#[fp_macros::document_module]
mod inner {
use {
crate::{
classes::*,
kinds::*,
},
fp_macros::*,
};
#[document_type_parameters("The cloneable function brand.")]
pub trait Closed<FunctionBrand: LiftFn>: Profunctor {
#[document_signature]
#[document_type_parameters(
"The lifetime of the profunctor.",
"The source type of the profunctor.",
"The target type of the profunctor.",
"The input type of the functions."
)]
#[document_parameters("The profunctor value to transform.")]
#[document_returns("A new profunctor that operates on functions.")]
#[document_examples]
fn closed<'a, A: 'a, B: 'a + Clone, X: 'a + Clone>(
pab: Apply!(<Self as Kind!( type Of<'a, T: 'a, U: 'a>: 'a; )>::Of<'a, A, B>)
) -> Apply!(<Self as Kind!( type Of<'a, T: 'a, U: 'a>: 'a; )>::Of<'a, <FunctionBrand as CloneFn>::Of<'a, X, A>, <FunctionBrand as CloneFn>::Of<'a, X, B>>);
}
#[document_signature]
#[document_type_parameters(
"The lifetime of the profunctor.",
"The brand of the closed profunctor.",
"The cloneable function brand for wrapping the input/output functions.",
"The source type of the profunctor.",
"The target type of the profunctor.",
"The input type of the functions."
)]
#[document_parameters("The profunctor value to transform.")]
#[document_returns("A new profunctor that operates on functions.")]
#[document_examples]
pub fn closed<
'a,
Brand: Closed<FunctionBrand>,
FunctionBrand: LiftFn,
A: 'a,
B: 'a + Clone,
X: 'a + Clone,
>(
pab: Apply!(<Brand as Kind!( type Of<'a, T: 'a, U: 'a>: 'a; )>::Of<'a, A, B>)
) -> Apply!(<Brand as Kind!( type Of<'a, T: 'a, U: 'a>: 'a; )>::Of<'a, <FunctionBrand as CloneFn>::Of<'a, X, A>, <FunctionBrand as CloneFn>::Of<'a, X, B>>)
{
Brand::closed::<A, B, X>(pab)
}
}
pub use inner::*;