base-4.19.0.0: Basic libraries
Copyright(C) 2015 David Luposchainsky
(C) 2015 Herbert Valerio Riedel
LicenseBSD-style (see the file LICENSE)
Maintainerlibraries@haskell.org
Stabilityprovisional
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

Control.Monad.Fail

Description

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: base-4.9.0.0

Synopsis

Documentation

class Monad m => MonadFail (m :: Type -> Type) where Source #

When a value is bound in do-notation, the pattern on the left hand side of <- might not match. In this case, this class provides a function to recover.

A Monad without a MonadFail instance may only be used in conjunction with pattern that always match, such as newtypes, tuples, data types with only a single data constructor, and irrefutable patterns (~pat).

Instances of MonadFail should satisfy the following law: fail s should be a left zero for >>=,

fail s >>= f  =  fail s

If your Monad is also MonadPlus, a popular definition is

fail _ = mzero

fail s should be an action that runs in the monad itself, not an exception (except in instances of MonadIO). In particular, fail should not be implemented in terms of error.

Since: base-4.9.0.0

Methods

fail :: String -> m a Source #

Instances

Instances details
MonadFail ReadP Source #

Since: base-4.9.0.0

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fail :: String -> ReadP a Source #

MonadFail ReadPrec Source #

Since: base-4.9.0.0

Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

fail :: String -> ReadPrec a Source #

MonadFail IO Source #

Since: base-4.9.0.0

Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> IO a Source #

MonadFail Maybe Source #

Since: base-4.9.0.0

Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> Maybe a Source #

MonadFail [] Source #

Since: base-4.9.0.0

Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> [a] Source #

MonadFail f => MonadFail (Ap f) Source #

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

fail :: String -> Ap f a Source #