You might also check out the GNU Scientific Library (GSL) at http://www.gnu.org/software/gsl/, for which there are bindings and wrappers for other languages. Or you could forgo OOP and write your programs in C, which does at least have the advantage of being extremely fast and efficient. And I believe you can compile GSL so it is optimized for your system. I believe there is (or was) a Haskell wrapper for GSL, but I can't find it.
Most high level systems (Matlab, Octave, Sage etc) allow you to write routines in C and link them in, thus getting the best of both worlds: the speed of C and the ease of use of a higher level computing environment. I guess it all comes down to what sort of algorithms you are using: big slow ones (such as Monte Carlo routines with 10^20 random numbers) or something quick and straightforward, such as quadrature.
Over the years I've used Maple, Matlab, MuPAD, Sage, Octave, C, Java, and others, and I've written (or at least blogged) about them all. I can't prescribe one over the other - you have to decide for yourself which best suits your usage, expertise, and requirements.