Really like the forEach in Java for anything you don't need the return value for. With the logic in a separate method it makes the code both short and readable.
When I do need the return value is stream, and ending in some collect.
But there are still some cases where you need to integration number in the loop, so back to for loops in that case.
With Clojure it's for if I want the return value, or doseq if I don't. It's also common to use reduce for looping when you need the return value.
After reading previous reactions maybe I should give Go a go. Having only one way to do things seems boring. But now I'm sometimes busy with Java changing the loops to someone else's taste to get the merge request approved.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.