{-# OPTIONS_HADDOCK not-home #-} module Polysemy.Internal.Fixpoint where ------------------------------------------------------------------------------ -- | An effect for providing 'Control.Monad.Fix.mfix'. newtype Fixpoint m a where Fixpoint :: (a -> m a) -> Fixpoint m a ------------------------------------------------------------------------------ -- | The error used in 'Polysemy.Fixpoint.fixpointToFinal', -- 'Polysemy.Fixpoint.runFixpoint' and 'Polysemy.Fixpoint.runFixpointM' -- when the result of a failed computation -- is recursively used and somehow visible. You may use this for your own -- 'Fixpoint' interpreters. The argument should be the name of the interpreter. bomb :: String -> a bomb str = error $ str ++ ": Internal computation failed.\ \ This is likely because you have tried to recursively use\ \ the result of a failed computation in an action\ \ whose effect may be observed even though the computation failed.\ \ It's also possible that you're using an interpreter\ \ that uses 'weave' improperly.\ \ See documentation for more information."