Я предлагаю сделать одно из них:
Stream.emits(works).flatMap(Stream.eval) // or
Stream.emits(works).evalMap(x => x) // which is the same, or
Stream(works: _*).evalMap(x => x) // which is also the same
Есть разница с выполнением Stream.evals
на works.sequence
в том, что вы теряете тот факт, что ваш эффект состоит из разных частей. Это всплывет, если вы запустите поток частично, например, выполнив:
stream.take(3).compile.drain
Если вы не последовательность, он будет запускать только первые 3 элемента из works
. Если вы это сделаете, он запустит их все.
Из других вариантов, предложенных Луисом Мигелем, только unfoldEval
сохраняет разделение, но, вероятно, это излишнее.