polysemy-zoo-0.4.0.0: src/Polysemy/Final/Fixpoint.hs
module Polysemy.Final.Fixpoint
(
module Polysemy.Fixpoint
, module Polysemy.Final
, runFixpointFinal
) where
import Polysemy
import Polysemy.Final
import Polysemy.Fixpoint
import Control.Monad.Fix
-----------------------------------------------------------------------------
-- | Run a 'Fixpoint' effect through a final 'MonadFix'
runFixpointFinal :: (Member (Final m) r, MonadFix m)
=> Sem (Fixpoint ': r) a
-> Sem r a
runFixpointFinal = interpretFinal $ \case
Fixpoint f -> do
f' <- bindS f
pure $ mfix f'