    {-# LANGUAGE Safe #-}

    -- |
    --
    -- Module      :  Control.Monad.Fail
    -- Copyright   :  (C) 2015 David Luposchainsky,
    --                (C) 2015 Herbert Valerio Riedel
    -- License     :  BSD-style (see the file LICENSE)
    --
    -- Maintainer  :  libraries@haskell.org
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -- Transitional module providing the 'MonadFail' class and primitive
    -- instances.
    --
    -- This module can be imported for defining forward compatible
    -- 'MonadFail' instances:
    --
    -- @
    -- import qualified Control.Monad.Fail as Fail
    --
    -- instance Monad Foo where
    --   (>>=) = {- ...bind impl... -}
    --
    --   -- Provide legacy 'fail' implementation for when
    --   -- new-style MonadFail desugaring is not enabled.
    --   fail = Fail.fail
    --
    -- instance Fail.MonadFail Foo where
    --   fail = {- ...fail implementation... -}
    -- @
    --
    -- See <https://gitlab.haskell.org/haskell/prime/-/wikis/libraries/proposals/monad-fail>
    -- for more details.
    --
    -- @since 4.9.0.0
    --

    module Control.Monad.Fail
        (MonadFail(fail)) where

    import GHC.Internal.Control.Monad.Fail