我想使用fs2流,目录EitherT和cats-effect IO定义具有以下签名的函数。
def list2Stream[A,B,F[_],S](vs: List[A],
f: A => EitherT[IO,S,Stream[IO,B]]
): EitherT[IO,S,Stream[IO,B]] = {
???
}
它将把vs中的每个值映射到一个值流,并在一个新流中收集所有这些值。
我尝试过类似的事情:
vs.map(f).sequence.flatten
但是似乎没有Stream的隐式定义。
以下答案是迈克尔·皮尔奎斯特(Michael Pilquist)在gitter频道中提供的:
vs.traverse(f).map(s => Stream.emits(s).flatten)