kirillrakhman
10/06/2016, 12:45 PMinline fun <T : Comparable<T>> ClosedRange<T>.toIterable(crossinline succ: T.() -> T) = Iterable {
object : AbstractIterator<T>() {
init {
setNext(start)
}
var value = start
override fun computeNext() {
value = value.succ()
if (value <= endInclusive) {
setNext(value)
} else {
done()
}
}
}
}