pub trait FPVector {
    type Scalar;

    fn fmap<F>(&self, f: F) -> Self
   where
        F: Fn(Self::Scalar) -> Self::Scalar
; fn reduce<F, T>(&self, init: T, f: F) -> Self::Scalar
   where
        F: Fn(Self::Scalar, Self::Scalar) -> Self::Scalar,
        T: Into<Self::Scalar>
; fn zip_with<F>(&self, f: F, other: &Self) -> Self
   where
        F: Fn(Self::Scalar, Self::Scalar) -> Self::Scalar
; fn filter<F>(&self, f: F) -> Self
   where
        F: Fn(Self::Scalar) -> bool
; fn take(&self, n: usize) -> Self; fn skip(&self, n: usize) -> Self; fn sum(&self) -> Self::Scalar; fn prod(&self) -> Self::Scalar; }
Expand description

Functional Programming tools for Vector

Required Associated Types

Required Methods

Implementations on Foreign Types

fmap for Vec

Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    let a = c!(1,2,3,4,5);
    assert_eq!(a.fmap(|x| x*2f64), seq!(2,10,2));
}

reduce for Vec

Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    let a = seq!(1,100,1);
    assert_eq!(a.reduce(0, |x,y| x + y), 5050f64);
}

Filter for Vec

Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    let a = c!(1,2,3,4,5);
    let b = a.filter(|x| x > 3.);
    assert_eq!(b, c!(4,5));
}

Take for Vec

Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    let a = c!(1,2,3,4,5);
    let b = a.take(3);
    assert_eq!(b, c!(1,2,3));
}

Skip for Vec

Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    let a = c!(1,2,3,4,5);
    let b = a.skip(3);
    assert_eq!(b, c!(4,5));
}

Implementors