diff options
Diffstat (limited to 'libraries/base/GHC/ST.hs')
-rw-r--r-- | libraries/base/GHC/ST.hs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libraries/base/GHC/ST.hs b/libraries/base/GHC/ST.hs index d5320522a5..46c5196c9e 100644 --- a/libraries/base/GHC/ST.hs +++ b/libraries/base/GHC/ST.hs @@ -58,16 +58,15 @@ instance Functor (ST s) where (# new_s, f r #) } instance Applicative (ST s) where - pure = return + {-# INLINE pure #-} + {-# INLINE (*>) #-} + pure x = ST (\ s -> (# s, x #)) + m *> k = m >>= \ _ -> k (<*>) = ap instance Monad (ST s) where - {-# INLINE return #-} - {-# INLINE (>>) #-} {-# INLINE (>>=) #-} - return x = ST (\ s -> (# s, x #)) - m >> k = m >>= \ _ -> k - + (>>) = (*>) (ST m) >>= k = ST (\ s -> case (m s) of { (# new_s, r #) -> |