Looking at the fx class hierarchy, I saw that ther...
# arrow
m
Looking at the fx class hierarchy, I saw that there are two
Fx
interfaces: one declared in
arrow.effects.typeclasses.suspended.concurrent
package (with
IOFx
implementation, another one in
arrow.effects.typeclasses.suspended.monad
(for the rest of monad implementations). Is there a reason that they are separated?
i
In fact, there are multiple interfaces of Fx more than you mentioned. Because Fx utilises a range of use-cases, wether within the Context of MonadDefer or purely within data types. It makes senses to separate them in different packages.
I could not find your reference
arrow.effects.typeclasses.suspended.concurrent
. Can you please sent in a link or the version of Arrow your referring to?
r
Fx gains power as you raise up from Monad going through MonadThrow, MonadDefer, Async and Concurrent
Each datatype exposes the max level of Fx that it can support being the Concurrent effect the same as the IO top Fx
m
@Imran/Malic I'm using a 0.9.0 release; I'll double-check the package when I'm at my computer
@Imran/Malic
arrow.effects.typeclasses.suspended.concurrent.Fx
is located in
arrow-effects-data-0.9.0.jar
. In the same archive, I found another
Fx
definition in
arrow.effects.typeclasses.suspended.monaddefer
package. Seemingly this
Fx
interface version is not implemented in any artifact (
effects-data
,
effects-extensions
,
effects-io-extensions
)
I updated Arrow to 0.9.1-SNAPSHOT and there is another Fx hierarchy. Forget about my question. And thanks for the explanations!
r
Yeah Fx will be in flux until 0.11 then it will be stable but we still need to make changes to accommodate BIO