.forEach vs. for-in loop

Xcode 7 added a forEach() method to SequenceType. Functional programming purists may be against, arguing that it doesn't bring any value. You still have to run a mental for loop in your head when you read the code (I read this argument in Advanced Swift  (https://www.objc.io/books/advanced-swift, but I am sure many people share this argument).

I think that a stronger argument would be that forEach() possibly mutates state while map(), filter(), etc. don't, and seeing a block like this could be misleading because it breaks the functional conventions. But Cocoa doesn't follow those conventions. Sometimes a block is just a block, as it is in many other UI oriented APIs.

So when would I use it? I think that it really does bring clarity when there is no logic inside the for each, and the same operation needs to be done for every element. If the order of iteration doesn't matter, and all elements must be iterated (no early return), forEach() is perfect.