The two paradigms apply naturally to different classes of problems. The strength of functional programming is in its support for abstraction through function composition and abstract data types.
Concurrency becomes necessary in dealing with, e.g., distributed and parallel systems.
It is clear that these problems will greatly benefit from the combined strength of functional and concurrent computation. Theoretical developments in these two areas have previously tended to diverge or at least proceed separately. The divergence is manifest in the obscurity of certain programming languages which attempt to combine the two paradigms without the support of well understood theoretical foundations. A certain amount of diversity is to be expected among calculi that emphasise different aspects of computation. However, an integral part of the project is to eliminate accidental diversity and to exhibit clearly the relationship between approaches that differ for good reason.