Functional programming with immutable state cannot possibly win in the general case.

There are two truths that ensure the dominance of imperative software:

1. At some level of software complexity, programmers MUST start to organize data into composite objects. They have to do this because working outside of well-defined problem domains is a recipe for buggy software and spaghetti code.

2. Copying memory around to enable to facilitate these immutable structures is SLOW.

Check out HVM, an experiment to make copying immutable data really fast: https://github.com/Kindelia/HVM