add unordered parallel variants of (flat)traverse and (flat)sequence #2946
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
There currently doesn't seem to be a convenient way to traverse a
Set
withIO
.traverse
doesn't work because there's noTraverse
instance forSet
, andunorderedTraverse
doesn't work because there is noCommutativeApplicative
instance forIO
. So I've addedparUnorderedTraverse
andparUnorderedSequence
for that purpose.I also added
parUnorderedFlatTraverse
andparUnorderedFlatSequence
for symmetry, but given that the non-par versions of these don't exist I'm not really sure we need these.Another logical set of operations would be
parUnorderedTraverse_
andparUnorderedSequence_
. But again, there is nounorderedTraverse_
orunorderedSequence_
inUnorderedFoldable
, so it's not going to be any more efficient than the non-_ variants, and given that it's easy to just discard the return value I haven't added them.So overall I think that
parUnorderedTraverse
andparUnorderedSequence
should be pretty uncontroversial. Which of the other ones do you think we want? I think they all make sense for symmetry, but then I'm not sure how useful they are in practice.Oh, and one more question: is
FlatMap
actually the right typeclass to use for theflat
variants, or should it beCommutativeFlatMap
?