A lot of people coming from a CPSC background view Fortran as a dinosaur. However, it's probably better viewed as a Crocodile in the sense that, even if it is ancient, it has evolved to fill a specific niche very, very well. Fotran allows complex math (especially linear algebra) to be expressed more compactly than most low level languages (e.g. C) are capable of while still offering excellent control over how hardware is utilized. Just as it's relatively easy to dance around a crocodile out of the water, it shouldn't be too difficult for languages like Python to challenge Fortran when ease of use matters but performance is of a lesser concern. However, going into the muddy water to wrestle with crocodiles is a different matter entirely! I would not be surprised if people rehash this conversation with an entirely new set of prospective croc-slayers another twenty years from now.
I think the single biggest reason Fortran is so successful in HPC is its implementation of multidimensional arrays. They are at least as fast as pointer arithmetic style C, they have powerful splicing syntax and they have a simple but good because length checkable file output format. Teach a scientist all the imperative control flow constructs along with this and he knows how to program a cluster for data parallel tasks, the most common one in HPC. Concerning Haskell and Co: Get back to me when it's simple to do a performance analysis, e.g. roofline model. Julia on the other hand is promising, but it's still going to be an uphill battle w.r.t. the work gone into Fortran compilers.
I think people forget that Fortran was designed to only do mathematics. I don't know of any other languages that are designed just to do number crunching and nothing else. Even though C is very low level, you can write almost anything in it. Even MATLAB/Julia are able to do more general purpose programming which Fortran doesn't really allow.
The more domain specific you are, the better you are at that one task. This is where Fortran excels and why it won't be replaced any time soon.
Also AFAIK, a Fortran compiler can, due to the way the language works, detect pointer aliasing which can result in major speedups as non-aliased code can be optimized to allow for fewer memory accesses.