inline fun Iterable.scan(start: R, transform: (R, T) -> R): List { var acc = start val ret = mutableListOf() for (i in this) { acc = transform(acc, i) ret.add(acc) } return ret }