fp_core/compose.rs
1#[macro_export]
2macro_rules! compose {
3 ( $last:expr ) => { $last };
4 ( $head:expr, $($tail:expr), +) => {
5 compose_two($head, compose!($($tail),+))
6 };
7}
8
9pub fn compose_two<A, B, C, G, F>(f: F, g: G) -> impl Fn(A) -> C
10where
11 F: Fn(A) -> B,
12 G: Fn(B) -> C,
13{
14 move |x| g(f(x))
15}