summaryrefslogtreecommitdiff
path: root/libraries/base/GHC/Base.hs
diff options
context:
space:
mode:
authorHerbert Valerio Riedel <hvr@gnu.org>2015-11-03 16:12:18 -0600
committerAustin Seipp <austin@well-typed.com>2015-11-03 16:15:24 -0600
commitb62605e53c167719b3bf8842eba628061cf22dd1 (patch)
treed1faf7b01bac2130ae1214b78e31e313912348fe /libraries/base/GHC/Base.hs
parent8c80dcc166e4a083086d8b240d84563d0c4c4c50 (diff)
downloadhaskell-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.hs8
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 #)