Macro rust2fun::compose

source ·
macro_rules! compose {
    ($($lst:expr),+) => { ... };
    (arg $arg:ident, $head:expr, $($tail:expr),*) => { ... };
    (arg $arg:ident, $last:expr) => { ... };
}
Expand description

Compose functions.

(f ∘ g ∘ h)(x) = f(g(h(x)))

Example

use rust2fun::prelude::*;

let f = |x| x + 1;
let g = |x| x / 2;
let h = |x| x * 3;

let composed = compose!(h, g, f, |x: i32| -x);
assert_eq!(6, composed(-3));