Jens Lindgren
01/24/2024, 10:06 AMval mySequence = sequence {
yield (
when (takeSubListOf(foo, 0, n--)) { subListOfFoo ->
hasMultipleElements(subListOfFoo) -> subListOfFoo.reduce { ... }
hasOneElement(subListOfFoo) -> subListOfFoo.first()
else -> //sequence ended
}
)
}
Jens Lindgren
01/24/2024, 10:42 AMval mySequence = sequence {
when (takeSubListOf(foo, 0, n--)) { subListOfFoo ->
hasMultipleElements(subListOfFoo) -> yield(subListOfFoo.reduce { ... })
hasOneElement(subListOfFoo) -> yield(subListOfFoo.first())
else -> yieldAll(emptySequence())
}
}
Klitos Kyriacou
01/24/2024, 10:52 AMJens Lindgren
01/24/2024, 11:02 AMSam
01/24/2024, 11:15 AMreturn@sequence
.Klitos Kyriacou
01/24/2024, 11:26 AMsequenceOf
for that:
val subListOfFoo = takeSubListOf(foo, 0, n--)
val mySequence = when {
hasMultipleElements(subListOfFoo) -> sequenceOf(subListOfFoo.reduce { ... })
hasOneElement(subListOfFoo) -> sequenceOf(subListOfFoo.first())
else -> emptySequence()
}
Klitos Kyriacou
01/24/2024, 11:36 AMsubListOfFoo.reduce { ... }
will return subListOfFoo.first()
when it only has one element, so you can get rid of that when
branch and rely on reduce
instead.Jens Lindgren
01/24/2024, 3:06 PM