rust_fp_categories/
applicative.rs1use std::rc::Rc;
2
3use crate::{Apply, Pure};
4
5pub trait Applicative: Apply + Pure {}
6
7macro_rules! applicative_numeric_impl {
8 ($($t:ty)*) => ($(
9 impl Applicative for $t {}
10 )*)
11}
12
13applicative_numeric_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }
14
15impl<A> Applicative for Rc<A> {}
16impl<A> Applicative for Box<A> {}
17
18impl<A> Applicative for Option<A> {}
19impl<A, E: Clone> Applicative for Result<A, E> {}
20impl<A> Applicative for Vec<A> {}