use lubeck::prelude::*; fn main() { let mk_tup_app = |first: usize| move |second: usize| (first, second); let xs = vec![3, 4, 5, 6]; let fs = [11, 21, 31, 41].map(mk_tup_app).to_vec(); let applicative_tuples = xs.app(fs); println!("tuples through applicative: {applicative_tuples:?}"); let mk_tup_mon = |first: usize| vec![(first, 3), (first, 4), (first, 5), (first, 6)]; let xs = vec![11, 21, 31, 41]; let monad_tuples = xs.bind(mk_tup_mon); println!("tuples through monad: {monad_tuples:?}"); }