ghc-9.10.3: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Utils.Monad.State.Strict

Contents

- The State monad
- Operations

Description

A state monad which is strict in its state.

Synopsis

- data State s a where
  - pattern State :: (s -> (# a, s #)) -> State s a
- state :: (s -> (a, s)) -> State s a
- evalState :: State s a -> s -> a
- execState :: State s a -> s -> s
- runState :: State s a -> s -> (a, s)
- get :: State s s
- gets :: (s -> a) -> State s a
- put :: s -> State s ()
- modify :: (s -> s) -> State s ()

# The State monad

data State s a where Source #

A state monad which is strict in the state `s`, but lazy in the value `a`.

See Note [Strict State monad] for the particular notion of strictness and implementation details.

Bundled Patterns

pattern State :: (s -> (# a, s #)) -> State s a |

#### Instances

Instances details

Applicative (State s) Source # |
Instance details Defined in GHC.Utils.Monad.State.Strict Methods pure :: a -> State s a # (<*>) :: State s (a -> b) -> State s a -> State s b # liftA2 :: (a -> b -> c) -> State s a -> State s b -> State s c # (*>) :: State s a -> State s b -> State s b # (<*) :: State s a -> State s b -> State s a #
Functor (State s) Source # |
Instance details Defined in GHC.Utils.Monad.State.Strict Methods fmap :: (a -> b) -> State s a -> State s b # (<$) :: a -> State s b -> State s a #
Monad (State s) Source # |
Instance details Defined in GHC.Utils.Monad.State.Strict Methods (>>=) :: State s a -> (a -> State s b) -> State s b # (>>) :: State s a -> State s b -> State s b # return :: a -> State s a #

state :: (s -> (a, s)) -> State s a Source #

evalState :: State s a -> s -> a Source #

execState :: State s a -> s -> s Source #

runState :: State s a -> s -> (a, s) Source #

# Operations

get :: State s s Source #

gets :: (s -> a) -> State s a Source #

put :: s -> State s () Source #

modify :: (s -> s) -> State s () Source #