Take a look at their (Maurice Herlihy, Nir Shavit) latest research - Hopscotch Hashing:
Try to guess what language they use for implementation/benchmarking. Haskell? Nah. Java? Nah. C++? Is it possible? Yeah, plain old C++.
Don't get blinded by marketing!
Just a few questions.
How are you going to prevent colocation of some objects in one cache-line (false-sharing), which can be crucial for design of synchronization primitive, in Java/Haskell?
How are you going to enforce colocation of some objects in one cache-line, which can be crucial for design of synchronization primitive, in Java/Haskell?
How are you going to express relaxed atomic RMW operations in Java/Haskell?
Maurice Herlihy and Nir Shavit use exactly such things in Hopscotch hash map. They use packing of items into single cache-line. They use extremely fine-grained atomic operations, for example load-release-wrt-other-loads (used in timestamp validation).
In C/C++ all those things are no problem. One can do anything he wants.
Functional languages have many useful concepts, but many (all?) of them can be used in imperative languages as well.
Uniqueness types? No problem. Just implement appropriate smart pointer.
Immutable objects? No problem. Just implement appropriate wrapper.
Asynchronous message-passing? No problem.
Many such concepts I'm currently using in C++.
In addition to the concept matches posted above, C++0x will have features that will make it easier to map some hallmark features of functional languages to C++, such as polymorphic functions and better support for currying. There's already a functional C++ library called FC++.
If you really like functional programming's way of thinking, I reccommend you look at that library. I too enjoy Haskell and I was glad to find out that there is a library for C++ that brings a lot of its ideas to the language and that it'll be easier to implement those ideas in the next standard.