Trait hetseq::Foldable
[−]
[src]
pub trait Foldable<I, F> { fn fold(self, init: I, f: F) -> I; }
Foldable heterogenous list
Example
#![cfg_attr(feature="nightly", feature(unsize, fn_traits, unboxed_closures))] #[macro_use] extern crate hetseq; use hetseq::{Foldable, Functor, Queue}; #[cfg(not(feature="nightly"))] use hetseq::prelude::*; use std::fmt::Display; lambda![ let Formatter = |arg: Display| -> String { format!("{}", arg) } ]; lambda![ let Extender = |item, extend: Extend<item>| -> extend { extend.extend(::std::iter::once(item)); extend } ]; fn main() { let queue = hqueue![1, 2.5]; let strings = queue.fmap(&Formatter).fold(Vec::new(), &Extender); assert_eq!(strings, ["1", "2.5"]); }
Required Methods
fn fold(self, init: I, f: F) -> I
fold sequence using F
unction starting with I
nit value
Implementors
impl<I, F> Foldable<I, F> for List<()>
impl<I, F> Foldable<I, F> for Queue<()>
impl<I, F, H, T> Foldable<I, F> for List<(H, T)> where
T: Foldable<I, F>,
F: FnMut<(H, I), Output = I>,impl<I, F, H, T> Foldable<I, F> for Queue<(H, T)> where
H: for<'a> Foldable<I, &'a mut F>,
F: FnMut<(T, I), Output = I>,