Вы не можете легко отбросить любую проблему, которая не подходит для функционального программирования как такового.
Многое зависит от реального языка, используемого для функционального программирования и его возможностей.
Одним из примеров является уже упоминавшийся Erlang для встроенных систем реального времени.
Полнота состояний также не является хорошим критерием для функционального программирования, в функциональных языках программирования есть несколько успешных способов справиться с этим.
Побочные эффекты также часто упоминаются в отношении функционального программирования. Каждая программа, которая не является полностью солипсической, имеет побочные эффекты. Таким образом, у каждого реального языка FP есть какой-то способ справиться с этим, и только вопрос элегантности заключается в том, чтобы инкапсулировать побочные эффекты мира.
Нет необходимости в произвольных побочных эффектах, таких как глобальные переменные.
Но есть наборы проблем, которые облегчают переход к функциональному программированию, потому что они не слишком искривляют ваш привычный взгляд на проблему. Но как только вам удастся мыслить функционально, все больше и больше наборов проблем открываются для меньшего количества побочных эффектов.
Даже при программировании на Си всегда полезно максимально уменьшить произвольные побочные эффекты, такие как глобальные переменные.