This will look like the original definitions [1]

> newtype State s a = State { runState :: s -> (a, s) }

before they became type synonyms

> type State s = StateT s Identity

by defining pattern synonyms

> pattern State :: (s -> (a, s)) -> State s a
> pattern State {runState} <- S.runState -> runState
>   where State a           = state a