News for hackers. Stuff that matters.
Re:Kotlin 1.0.5 is here by mike_hearn on Tuesday November 08, 2016 @04:37PM (#12904166)
What's unclean about for loops?
Re:Kotlin 1.0.5 is here by willtim on Tuesday November 08, 2016 @06:20PM (#12904864)
For loops require explicit and error-prone use of integer indices and are of limited utility outside arrays. Foreach loops in Java/C# are an attempt to generalise, but they are really just syntactic sugar over external iterators. They give privileged status to the specific iteration interface chosen, entangling the language and its libraries. The actual Iterator interface chosen by Java has proven to be unsuitable for coroutines/yield, but is now too difficult to change. In Haskell, foreach loops can be implemented purely as a higher-order library function.
Re:Kotlin 1.0.5 is here by mike_hearn on Wednesday November 09, 2016 @04:51AM (#12908692)
Yeah, I was meaning 'for loops' to include the modern sense of foreach loops too. Java doesn't distinguish and Kotlin doesn't have the old style at all.

There's no rule that says a for loop must only support a single iteration interface. That seems more like an implementation detail of the compiler than a problem with for loops in general.

Re:Kotlin 1.0.5 is here by willtim on Wednesday November 09, 2016 @12:41PM (#12912525)
Of course the big elephant in the room that I didn't mention, is that for loops get work done via mutation. This is perhaps what was mean't by “unclean".
Re:Kotlin 1.0.5 is here by tlarkworthy on Tuesday November 08, 2016 @04:48PM (#12904249)
Mutating index state variables, and it's not functional (you can't pass a function to be the inner loop)