Now that I have had the chance to read the article more closely I can point out a number of claims that do not match my understanding.
Problems with the IO Monad approach: Potential lack of type safety
No justification is given for this claim. If there is an actual lack of type safety an example should be given. Iâm not sure what âpotentialâ could mean here, but if you think itâs likely that IO
-wrapper effect systems are vulnerable to undiscovered type safety issues than I that that warrants a couple of sentences of explanation.
Fundamental inability to support algebraic effects (delimited continuations) due to reliance on MonadUnliftIO
Indeed IO
-wrapper effect systems do not support multishot continuations, but that has nothing to do with MonadUnliftIO
, itâs simply because IO
doesnât. I also think this warrants a sentence or two explaining why anyone should care about multishot continuations. I think this is far from settled understanding, and my request for a compelling example of LogicT on Twitter went unanswered.
Fragmentation of the Haskell ecosystem and significant migration costs due to the proliferation of incompatible effect libraries
Ultimately all IO
-wrapper effect systems are compatible, exactly because they are based on IO
. There hasnât been much work making them practically compatible, but I donât envisage much difficulty here.
Algebraic effects are a programming paradigm that has gained attention in recent years. They are a language feature and theoretical framework aimed at improving composability and maintainability of programs.
I think itâs worth a sentence or two defining âalgebraic effectsâ. I, for one, still donât know what âalgebraic effectâ means (or even if itâs a formal or informal concept).
effectful and bluefin have issues causing runtime errors if MonadUnliftIO
, a typeclass intended for safe exception handling, is improperly used
That doesnât really get to the heart of the matter. MonadUnliftIO
is unsafe full stop for effect tracking systems that expose its full functionality. It seems that Heftia gets around this by not exposing its full functionality. Thatâs fair enough! But itâs still unclear whether Heftia supports enough of its functionality to justly claim it supports it at all.
The methodology behind the IO monad approach involves iterative experimentationâimplementing solutions, encountering issues, and then applying ad-hoc patches ⌠This leads to a constant cycle of discovering and patching new issues. Such a methodology becomes increasingly risky near the core of an ecosystem. A foundational issue discovered later could necessitate interface changes so extensive that they would break compatibility across the ecosystem.
Has the author been involved in the design and implementation of an IO
-wrapper effect system to be able to make claims what its methodology involved? The description here certainly doesnât match the methodology of Bluefin. Bluefin is based on the ST
approach which has robust theory behind it. There has been no cycle of discovering and patching new issues, and given the pre-existing theory it seems unlikely that any such foundational issue will be discovered.
IO monad-based libraries like effectful, cleff, and bluefin continually discover and patch issues, as seen in GitHub issues
This claim does not match my understanding and I think the author would do well to provide some evidence, such as links to GitHub issues if he wants to make claims like this. Certainly I would not describe my experience developing Bluefin as one of âcontinually discovering and patching issuesâ.
Please consider building an ecosystem robust to future theoretical developments, encouraging mutual interoperability, such as the data-effects approach advocated by heftia.
I fear the author may have fallen into the âN+1 competing standards trapâ explained by XKCD.
Let us stop repeating the cycle of migration hell.
Itâs not clear that IO
-based effect systems suffer from migration hell.
Let us work together to build the future of the Haskell effect system ecosystem.
Iâm happy to collaborate to improve the effect system ecosystem, if thereâs something beneficial I can do on the Bluefin side.