Nested
works for any F
and G
, but it can't have flatMap
(it's an Applicative but not a Monad)
F
and G
Either
) and the other can vary
EitherT
in this case since you need flatMap
to get to the List of IDs
traverse
does
fold
with mapN
Task
Option
Some
and None
as types, but that's off topic)
Task[_]
as a return type
F[_]
"
Either
could have different error types, so you know that you need some transformations to get to the same F
F[List[(DataSpec, DataSetRef]]
to F[List[DataSetRef]]
map(_.map(_._2))
F[List[(DataSpec, DataSetRef]]