(switch foo
(case bar -> (do whatever you want))
(case hmm -> (do something else)))
Some languages have backtracking: (backtrack
(keep trying)
(different things)
(until it works))
You just can't add those kinds of features to most languages because most languages are not programmable... let z = Complex<f64>::new(1.0, 2.0);
let A = Matrix<f64>::ident(10, 10);
let B : Matrix<Complex<f64>> = z*A;
let C : Matrix<Complex<f64>> = 2.0*B;
If Rust can't do scalar multiplication or real to complex conversions, it's really not usable for what Eigen or Numpy can do. Try defining the Mul trait generically for those multiplication operators, and you'll see what I mean.
Consistently twice as slow, with memory usage between 2 and 400(!) times larger. Java is slow and bloated compared to native.
Your next argument will be something about how micro-benchmarks don't reflect reality for larger programs...