frontNotEmpty :: State (InnerState sym sta) Bool
frontNotEmpty = state $ \oldState@(!front, _, _) ->
  (not $ null front, oldState)
frontNotEmpty :: State (InnerState sym sta) Bool
frontNotEmpty = state $ \oldState@(!front, _, _) ->
  (not $ null front, oldState)
frontNotEmpty = state $ \oldState@(!front, _, _) ->
  (not $ null front, oldState)