AZ
fn map_twice<A,F>(f: impl Fn(A) -> B, m: F<A>) -> F<A>
where F : Functor {
m.map(f).map(f)
}
let option = map_twice(|x| x*x, Some(10));
let result = map_twice(|x| x*x, Ok(10));
let list = map_twice(|x| x*x, vec![10]));
Size: a a a
AZ
fn map_twice<A,F>(f: impl Fn(A) -> B, m: F<A>) -> F<A>
where F : Functor {
m.map(f).map(f)
}
let option = map_twice(|x| x*x, Some(10));
let result = map_twice(|x| x*x, Ok(10));
let list = map_twice(|x| x*x, vec![10]));
AZ
λ
fn map_twice<A,F>(f: impl Fn(A) -> B, m: F<A>) -> F<A>
where F : Functor {
m.map(f).map(f)
}
let option = map_twice(|x| x*x, Some(10));
let result = map_twice(|x| x*x, Ok(10));
let list = map_twice(|x| x*x, vec![10]));
AZ
λ
r
λ
AZ
map
определишь в трейте?λ
map
определишь в трейте?AZ
B
AZ
AZ
AZ
AZ
С
λ
λ
λ
AZ