Comments (5)
Note the 2.11 behavior matches that of Future.traverse
(https://scastie.scala-lang.org/aU1EoSBnQu2rbWiXtEbcsQ)
from cats.
Right, it does 🤔.
But it doesn't match the traverse
with IO: https://scastie.scala-lang.org/1JfGkbQOSTicrUyPaERQhw
Regardless, it still looks like a very breaking change.
from cats.
it still looks like a very breaking change
looks like, but is not. See previous discussion:
from cats.
The problem is Future, and hence this function test: Int => Future[Unit]
is not pure.
When you call test a side effect immediately starts. That is not true of the IO version. When you are working with Future you are working with an impure type and we don't limit the traverse implementation of data types to try to work that.
A PR was created where a lot of energy was spent to optimize traverse implementations: #4498 -- I think it is very likely the change you are seeing is due to that.
I guess what is happening is that since Future has a StackSafeMonad, it is traversing directly (which is what the standard library does), but that is triggering the side-effects in a different order.
from cats.
looks like, but is not
It depends on how you look at it (or how much code you need to fix) 😆.
Thanks for chiming in, everyone! I'll close this one and will go hunting down my traverses :)
from cats.
Related Issues (20)
- Inconsistent behaviour when using Eval as Applicative
- `Tuple1SemigroupalOps` methods have different names from other `TupleNSemigroupalOps` classes HOT 3
- Instances for Currency HOT 7
- EitherT[Option, ?, ?]] can't be used as a bifunctor HOT 5
- trait EuclidianRing should not be a Ring HOT 4
- OutOfMemoryError when IO.uncancelable is used in recursive function HOT 1
- ambiguous implicit resolution of `Show.ContravariantShow[immutable.SortedMap[K, V]]` HOT 1
- Should Monad extend Defer? HOT 11
- Support Scala Native 0.5 HOT 3
- Adding an alternative version of the method whenA with a different signature
- `Eval` thread safety HOT 4
- Optimize `distinct`/`distinctBy` implementations for non-empty collections
- [PROPOSAL] Aliases for methods `traverse_` and `sequence_` HOT 7
- Any reason `intercalate` isn't exposed directly on the `Semigroup` companion object? HOT 3
- Reveal internal but public identifiers and make them `private[cats]`
- Cats Order needs an `orElseBy` combinator HOT 8
- Loss of type safety in scala 3 under certain conditions
- Make Later covariant in its type parameter
- Ease awkward constructions when doing something before raising HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cats.