1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use crate::hkt::HKT; use crate::monoid::Monoid; pub trait Foldable<A, B>: HKT<A, B> { fn reduce<F>(b: B, ba: F) -> <Self as HKT<A, B>>::Target where F: FnOnce(B, A) -> (B, B); fn fold_map<M, N, F>(m: M, fa: F) -> M where M: Monoid<N>, F: FnOnce(<Self as HKT<A, B>>::URI) -> M; fn reduce_right<F>(b: B, f: F) -> <Self as HKT<A, B>>::Target where F: FnOnce(A, B) -> (B, B); }