The expression `(1 .. 10 step 2)` returns an IntPr...
# stdlib
n
The expression
(1 .. 10 step 2)
returns an IntProgression,
('a' .. 'z' step 2)
returns a CharProgression, and there are equivalents for many built in types, but not for user-defined types. Could the stdlib define the
step
function for
ClosedRange<T>
, to return a new stdlib type
Progression<T>
.?
s
Not every comparable can be added and subtracted, so it only really works for numeric types. What would step mean for e.g. a
String
? Unless it could take a lambda, like
generateSequence
...
Copy code
infix fun ClosedRange<String>.step(step: (String) -> String): Iterable<String> =
    generateSequence(start, step).takeWhile { it in this }.asIterable()

for (s in "foo".."foooooo" step { it + "o" }) println(s)
I kind of like it! 😄
❤️ 3
not entirely sure how sensible it is, though…
n
I kind of like it too!
But yeah, I get your point. There is no way to express “addable” in Kotlin.
But a step function is a good compromise