相性というよりもDIコンテナ自体がそもそもオブジェクト指向プログラミング「言語」を前提として作られた技術であるということをまず書いておきたいと思います。「DIという考え方」は関数型プログラミング言語でも応用できるかもしれませんが、「DIコンテナ」はオブジェクト指向言語(特にクラスがある言語)特有のものと言えます。
また、業界全体が徐々に関数型的に作られたライブラリなどに移行しているという潮流は確かに感じますが、別にオブジェクト指向プログラミングができなくなることを意味しません。というのは、そもそも関数型プログラミングとオブジェクト指向プログラミングは別に相反するものではないからです。
たとえば、Javaでもセッターなどの副作用を使わないプログラミングスタイルは「関数型プログラミング」ですし、いわゆる関数型プログラミング言語でもオブジェクト指向プログラミングをすることはできます。パラダイムと言語はある程度独立しているということに注意してください。
その上で言うと、DIコンテナという「ソフトウェア」は現状、オブジェクト指向言語(JavaやJavaScriptなど)でしか提供されていないので、DIコンテナがない言語ならその言語での作法を踏まえるべきです。一方、Javaで関数型プログラミングをするとしても、DIコンテナが有効であれば特に躊躇する必要はありません。DIという考え方の根底にある「依存性を外から注入する」という思想自体は別に関数型プログラミングと相反するものではありませんから。
プロジェクトでDIコンテナを使わないという方針で行くのならそれに従うべきだと思いますが「DIコンテナ」について特別避けようと意識しなくても良いかと思います。
2y