5

I want to parse a json file which output a collection of A. The signature of the Output is IO[List[A]]

How can I convert this value to a Stream: Stream[IO, A] ? I can convert to a Stream[IO, List[A]] but it is not what I want

fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x)) Thanks

nam
  • 3,542
  • 9
  • 46
  • 68

2 Answers2

12

You can also use Stream.emits, which accepts a Seq, so fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_)).

This is more efficient than using varargs with apply because it avoids wrapping and unwrapping the sequence structure - this can save a lot in the case of specialized primitive collections.

Daenyth
  • 35,856
  • 13
  • 85
  • 124
  • Thank you so much! I was getting annoyed with the amount of vararg conversions I was dealing with. This is much cleaner – Henry Parker Jul 12 '21 at 16:00
4

Try

fs2.Stream.eval(output).flatMap(x => fs2.Stream.apply(x: _*))

What does `:_*` (colon underscore star) do in Scala?

Dmytro Mitin
  • 48,194
  • 3
  • 28
  • 66