diff options
author | Herbert Valerio Riedel <hvr@gnu.org> | 2015-11-03 16:12:18 -0600 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2015-11-03 16:15:24 -0600 |
commit | b62605e53c167719b3bf8842eba628061cf22dd1 (patch) | |
tree | d1faf7b01bac2130ae1214b78e31e313912348fe /libraries/base/GHC/Base.hs | |
parent | 8c80dcc166e4a083086d8b240d84563d0c4c4c50 (diff) | |
download | haskell-b62605e53c167719b3bf8842eba628061cf22dd1.tar.gz |
Add `MonadPlus IO` and `Alternative IO` instances
This requires adding a new primitive `mplusIO` to `GHC.IO`
Update transformers submodule to accomodate extant orphan instances.
Reviewed By: austin, bgamari
Differential Revision: https://phabricator.haskell.org/D1148
GHC Trac Issues: #10755
Diffstat (limited to 'libraries/base/GHC/Base.hs')
-rw-r--r-- | libraries/base/GHC/Base.hs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libraries/base/GHC/Base.hs b/libraries/base/GHC/Base.hs index 619acac7e0..189e480359 100644 --- a/libraries/base/GHC/Base.hs +++ b/libraries/base/GHC/Base.hs @@ -111,7 +111,7 @@ import GHC.CString import GHC.Magic import GHC.Prim import GHC.Err -import {-# SOURCE #-} GHC.IO (failIO) +import {-# SOURCE #-} GHC.IO (failIO,mplusIO) import GHC.Tuple () -- Note [Depend on GHC.Tuple] import GHC.Integer () -- Note [Depend on GHC.Integer] @@ -1079,6 +1079,12 @@ instance Monad IO where (>>=) = bindIO fail s = failIO s +instance Alternative IO where + empty = failIO "mzero" + (<|>) = mplusIO + +instance MonadPlus IO + returnIO :: a -> IO a returnIO x = IO $ \ s -> (# s, x #) |