-----------------------------------------------------------------------------
-- |
-- Module      :  Miso.State
-- Copyright   :  (C) 2016-2025 David M. Johnson (@dmjio)
-- License     :  BSD3-style (see the file LICENSE)
-- Maintainer  :  David M. Johnson <code@dmj.io>
-- Stability   :  experimental
-- Portability :  non-portable
--
-- Similar to how one manages state in [React](https://react.dev/learn/managing-state),
-- `miso` applications manage state with the 'State' monad.
--
-- The 'State' 'Monad' works well with `MonadState` lenses as seen in 'Miso.Lens' and the 'lens' library.
--
-- @
-- updateModel :: Action -> Effect Model Action
-- updateModel (AddOne event) = do
--   modify (+1)
--   io_ (consoleLog "Added One!")
-- @
--
-- This module re-exports select combinators from 'Control.Monad.RWS' and serves as a placeholder to add new state management combinators.
--
----------------------------------------------------------------------------
module Miso.State
  ( ask
  , modify
  , modify'
  , get
  , gets
  , put
  , tell
  ) where
----------------------------------------------------------------------------
import Control.Monad.RWS (get, gets, modify, modify', tell, put, ask)
----------------------------------------------------------------------------