-- | Defines a capability type class for a state effect. A state capability
-- provides a state which can be retrieved with 'get' and set with 'put'. As an
-- analogy, each state capability is equivalent to making one @IORef@ available
-- in an @IO@ computation (except, of course, that a state capability does not
-- have to be provided by @IO@).
--
-- This is a very expressive capability. It is often preferable to restrict to
-- less powerful capabilities such as "Capability.Reader", "Capability.Writer",
-- or "Capability.Stream".

module Capability.State
  ( -- * Interface
    module Capability.State.Internal.Class
    -- * Strategies
  , module Capability.State.Internal.Strategies
    -- ** Modifiers
  , module Capability.Accessors
  ) where

import Capability.Accessors
import Capability.State.Internal.Class
import Capability.State.Internal.Strategies