First-class functions: Difference between revisions
Content added Content deleted
(→{{header|Rust}}: Removed duplicate line) |
(→{{header|Rust}}: Use blowfish operator) |
||
Line 2,222: | Line 2,222: | ||
let invlist: [&Fn(f64) -> f64; 3] = [&cube_root, &f64::asin, &f64::acos]; |
let invlist: [&Fn(f64) -> f64; 3] = [&cube_root, &f64::asin, &f64::acos]; |
||
let |
let result = flist.iter() |
||
.zip(&invlist) |
|||
.map(|(f,i)| compose(f,i)(0.5)) |
|||
.collect::<Vec<_>>(); |
|||
println!("{:?}", |
println!("{:?}", result); |
||
} |
} |
||
Line 2,236: | Line 2,237: | ||
move |x: T| g(f(x)) |
move |x: T| g(f(x)) |
||
⚫ | |||
} |
|||
/* |
|||
This is how compose would be written in stable Rust |
|||
fn compose<'a, F, G, T, U, V>(f: F, g: G) -> Box<Fn(T) -> V> |
|||
where F: 'a + Fn(T) -> U, |
|||
G: 'a + Fn(U) -> V, |
|||
{ |
|||
Box::new(move |x: T| g(f(x))) |
|||
} |
|||
⚫ | |||
=={{header|Scala}}== |
=={{header|Scala}}== |