Давайте обсудим метод forEach() в Java Stream: нарушает ли он принципы функционального программирования?

Разработчики Java обычно не знакомы с функциональными шаблонами, но с момента появления Java 8 их популярность возросла. Тем не менее, я чувствую, что иногда мы слишком быстро используем функциональные конвейеры, не полностью понимая принципы функционального программирования.