[Git][ghc/ghc][master] compiler: remove unused lazy state monad

Marge Bot (@marge-bot) gitlab at gitlab.haskell.org
Tue Sep 13 14:30:02 UTC 2022



Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC


Commits:
dc6af9ed by Cheng Shao at 2022-09-13T10:29:45-04:00
compiler: remove unused lazy state monad

- - - - -


2 changed files:

- − compiler/GHC/Utils/Monad/State/Lazy.hs
- compiler/ghc.cabal.in


Changes:

=====================================
compiler/GHC/Utils/Monad/State/Lazy.hs deleted
=====================================
@@ -1,78 +0,0 @@
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE UnboxedTuples #-}
-{-# LANGUAGE PatternSynonyms #-}
-
--- | A lazy state monad.
-module GHC.Utils.Monad.State.Lazy
-  ( -- * The State monda
-    State(State)
-  , state
-  , evalState
-  , execState
-  , runState
-    -- * Operations
-  , get
-  , gets
-  , put
-  , modify
-  ) where
-
-import GHC.Prelude
-
-import GHC.Exts (oneShot)
-
--- | A state monad which is lazy in the state.
-newtype State s a = State' { runState' :: s -> (# a, s #) }
-    deriving (Functor)
-
-pattern State :: (s -> (# a, s #))
-              -> State s a
-
--- This pattern synonym makes the monad eta-expand,
--- which as a very beneficial effect on compiler performance
--- See #18202.
--- See Note [The one-shot state monad trick] in GHC.Utils.Monad
-pattern State m <- State' m
-  where
-    State m = State' (oneShot $ \s -> m s)
-
-instance Applicative (State s) where
-   pure x   = State $ \s -> (# x, s #)
-   m <*> n  = State $ \s -> case runState' m s of
-                            (# f, s' #) -> case runState' n s' of
-                                           (# x, s'' #) -> (# f x, s'' #)
-
-instance Monad (State s) where
-    m >>= n  = State $ \s -> case runState' m s of
-                             (# r, s' #) -> runState' (n r) s'
-
-state :: (s -> (a, s)) -> State s a
-state f = State $ \s -> case f s of
-                        (r, s') -> (# r, s' #)
-
-get :: State s s
-get = State $ \s -> (# s, s #)
-
-gets :: (s -> a) -> State s a
-gets f = State $ \s -> (# f s, s #)
-
-put :: s -> State s ()
-put s' = State $ \_ -> (# (), s' #)
-
-modify :: (s -> s) -> State s ()
-modify f = State $ \s -> (# (), f s #)
-
-
-evalState :: State s a -> s -> a
-evalState s i = case runState' s i of
-                (# a, _ #) -> a
-
-
-execState :: State s a -> s -> s
-execState s i = case runState' s i of
-                (# _, s' #) -> s'
-
-
-runState :: State s a -> s -> (a, s)
-runState s i = case runState' s i of
-               (# a, s' #) -> (a, s')


=====================================
compiler/ghc.cabal.in
=====================================
@@ -795,7 +795,6 @@ Library
         GHC.Utils.Misc
         GHC.Utils.Monad
         GHC.Utils.Monad.State.Strict
-        GHC.Utils.Monad.State.Lazy
         GHC.Utils.Outputable
         GHC.Utils.Panic
         GHC.Utils.Panic.Plain



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/dc6af9ed87e619d754bfc385df931c81cba6d93a

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/dc6af9ed87e619d754bfc385df931c81cba6d93a
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20220913/60baa087/attachment-0001.html>


More information about the ghc-commits mailing list