If in fact Polysemy delivers a 30-50x slowdown compared to pure, ST, or a 20-30x slowdown compared to cleft / Effectful, what is the point? You get an expressivity improvement that can be trivial compared to the fact that you’re now operating in the performance range of Python, Ruby, and Smalltalk, legendary slouches.
My fundamental Haskell values are for a reasonably performant high-expressivity language. Deliberately hobbling myself with Polysemy means that I now have to work harder to get performance out of other parts of my program to compensate for Polysemy creating a major loss, or be careful structuring my program so little code execution occurs in the Polysemy layer.
It’s a bit Julian on my part (Julia users want it all, but will never have it), but it’d be cool if Polysemy were sped up by delimited continuations or other recent optimizations such that people who like Polysemy as a provider for the free / freer monads pattern can use it in more versatile ways.
(Iirc Discord-Haskell vs Calamity comes down to Calamity being more powerful and multithreaded. If performance gain in the latter is lost through Polysemy, then Calamity has much less to gain over Discord-Haskell).