we already have the capability to cross-call from pretty much any language to any other (with varying degrees of difficulty)
It's that 'difficulty' which I'm referring to. Mapping C++ constructs onto Haskell (or vice versa) isn't trivial.
I imagine that the constraints of pure FP would obviate a lot of the incompatibilities, as you would be able to call FP subsystem from anywhere
What about lazy-evaluation vs eager? What about static vs dynamic type systems? It isn't the case that all functions are created equal.
I may be missing something, but concurrency and parallelism seem trivial for immutable items
But real-life C++ code doesn't tend to make extensive use of immutable objects, and for good reasons.
If you strip away all of the hacks that allow you to do things that are not appropriate to the paradigm, integration would be simplified
No. This isn't like Lego. The differences between the languages are considerable. If you want Java or C# to play nice with C++ objects, managed by C++ smart-pointers for reference counting, you have no choice but to reinvent C++ inside Java. (As I understand it this is kinda what 'Managed C++' does.) Likewise if you want Java objects to be accessible from C++, you either have to start pinning objects to block the Java garbage-collector from moving the object, or integrate C++ into the JVM's world.
There's a reason that nice bindings take some effort.