Functional Style of programming has been around for decades. The recent
popularity and availability of multicore processors has rekindled the
interest in this well tried and tested paradigm. Unlike a single 
processor where multithreads are simply multitasked, in a multicore
processor, threads are on steroids, they run concurrently.

Sharing data is not a bad idea
Mutating (changing) data is not a bad idea in itself

Shared mutable data is pure evil and causes trouble in when concurrency
is involved.

In functional style, you work with immutable data and functions with
no side effect. This model is better suited for concurrency and 
multicore processors.

F# brings this model to the .NET CLR.