I've been reading and thinking a fair bit about this. The buzz seems to be that in the multi-core future, functional languages will become more popular. I'm a relative noob to functional programming. My only exposure was academic, and nothing complicated enough to really put this class of language through its paces.
So, as I understand it, pure functions can be easily and transparently parallelized. This is a great feature, since it means no hassles with writing threading code. However, it doesn't appear to give much help with serial code.
Example:
fooN( ... (foo3(foo2(foo1(0)))))
Serial calls like this seem to be a common and sometimes unavoidable issue. To me these are at the root of why parallelization is so difficult. Some tasks simply are (or appear to be) highly serial. Does having a "functional mindset" allow you to better decompose some seemingly serial tasks? Do any existing functional languages offer transparent mechanisms for better parallelizing highly serial code? Finally, are functional languages inherently more parallelizable than OO or imperative languages, and why?