только cats-effect?
def getPage(pageNo: Int): IO[List[T]] = ???
def getAllPages[T](): IO[List[T]] = {
def loop(pageNo: Int, acc: List[T]): IO[List[T]] =
getPage(pageNo).flatMap {
case Nil => IO.pure(acc)
case ls => loop(pageNo + 1, acc ::: ls)
}
loop(1, Nil)
}
Scastie: https://scastie.scala-lang.org/WteekClkScOlKY1M0RuAWQ
Решается однострочным фолдом
https://scastie.scala-lang.org/g1HNwCgcRRG7AiVyFFRvDw
Обсуждают сегодня