But many effect systems do it under the hood, e.g. speff
has this:
-- | Unpack the 'Eff' monad.
runEff :: Eff '[] a -> a
runEff (Eff m) = unsafeDupablePerformIO (runCtl $ m Rec.empty)
{-# INLINE runEff #-}
Do we really know for sure that is safe?
I believe, especially with higher operations, there are still open problems. For example you can store the continuation in a data type and run it later under another handler. I think that is also what Alexis’ Twitch stream was about.