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}