Let me respond as the author of the heftia effect library.
First of all, in the Haskell effect library community, performance is treated as very important. This is because the focus is more on practical usability than academic soundness. This was not always the case, but seems to have become the trend over the past few years. I only joined the community recently, so I do not know much about how things were before.
I am a complete beginner when it comes to category theory, and I do not know anything about adjunctions. That said, I tend to have an academic mindset, so to be honest, I have some doubts about the current state of the community, where performance is emphasized so heavily that semantic correctness is often treated as secondary.
This concern is exactly what led to the design philosophy behind heftia
. It avoids depending on the IO
monad, and takes a synthetic approach like transformers. I believe that, using equational reasoning, it should be possible to show that it is strictly equivalent to the formulations in the (higher-order version of) algebraic effects literature.
By the way, it seems like the topic of higher-order effects has not been mentioned yet in this discussion. The issue of how higher-order effects interact with continuations is an important factor when thinking about why so many different libraries exist.
I am not very familiar with the analytic libraries (eff
, effectful
, bluefin
, cleff
, etc), so I would like to talk mainly about the synthetic ones (mtl
, fused-effects
, polysemy
, freer-simple
, etc). I admit that my understanding may be biased as the author of heftia
. As far as I know, the first libraries to encounter this problem were fused-effects
and polysemy
. When effects like coroutines or nondeterministic computations were combined with higher-order effects (scoped operators), they sometimes produced unexpected behavior. Later (or possibly at the same time), it was found that freer-simple
did not have this issue. This led to the understanding that algebraic effects can be implemented correctly in Haskell as long as higher-order effects are not supported.
Note that the original papers on algebraic effects do not include higher-order effects. However, the community came to believe that higher-order effects are essential in practice, and wanted to support them.
So if I had to give a final answer, I would say that freer-simple
is the only library that strictly implements the original definition of algebraic effects from the literature. All other libraries are variants that introduce extensions for practical use or restrictions for performance reasons.
To the community, if any part of my understanding of the history is incorrect, please feel free to correct me. I was not part of the community at that time.
I forgot to mention, besides freer-simple
, there is also mpeff
as a library equivalent to algebraic effects. Since it is an analytic implementation, it cannot be proven sound by equational reasoning. However, it is based on papers related to the Koka language.