Compare commits
2 Commits
6aa149ee6a
...
5d9a0a10df
Author | SHA1 | Date | |
---|---|---|---|
5d9a0a10df | |||
3ac3def389 |
@ -70,6 +70,12 @@ pub trait Functor: WeakFunctor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn fmap<'a, T: 'a + Functor, A: 'a, B: 'a>(
|
||||||
|
f: impl 'a + FnOnce(A) -> B,
|
||||||
|
) -> impl FnOnce(T::F<'a, A>) -> T::F<'a, B> {
|
||||||
|
move |fa| T::fmap(f, fa)
|
||||||
|
}
|
||||||
|
|
||||||
pub trait ApplicativeSeq: Functor {
|
pub trait ApplicativeSeq: Functor {
|
||||||
fn seq<'a, A: 'a, B: 'a>(
|
fn seq<'a, A: 'a, B: 'a>(
|
||||||
ff: Self::F<'a, impl 'a + FnOnce(A) -> B>,
|
ff: Self::F<'a, impl 'a + FnOnce(A) -> B>,
|
||||||
|
@ -53,17 +53,3 @@ impl<U: ApplicativeLA2, V: ApplicativeLA2> ApplicativeLA2 for CompositionClass<U
|
|||||||
U::la2(|ua, ub| V::la2(f, ua, ub), fa, fb)
|
U::la2(|ua, ub| V::la2(f, ua, ub), fa, fb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn compose<'a>(f: impl 'a + Fn(i16) -> i32, g: impl 'a + Fn(i8) -> i16) -> impl 'a + Fn(i8) -> i32 {
|
|
||||||
move |x| f(g(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_compose() {
|
|
||||||
assert_eq!(compose(|x| (x + 5).into(), |x| (x + 3).into())(2), 10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user