Haskell is a modern, standard, non-strict, purely-functional programming language. It provides polymorphic typing, lazy evaluation and higher-order functions. It also has an innovative type system which supports a systematic form of overloading and a module system.
It is specifically designed to handle a wide range of applications, from numerical through to symbolic. To this end, Haskell has an expressive syntax, and a rich variety of built-in data types, including arbitrary-precision integers and rationals, as well as the more conventional integer, floating-point and boolean types.
There are several implementations of Haskell available of which all are free.
I've only written one Haskell program so far, which was mostly an experiment in Haskell and Literate Programming. Literate programming is a style of programming where you try to write more documentation than code from the beginning on. Haskell has a special input file format for that, .lhs files.