HORIZON HASKELLDocslts/ghc-9.14.xd82dee82026-10-12Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · d82dee8 · 2026-10-12

Modulecapability-0.5.0.1Haskell2010

Capability.State.Internal.Strategies

  • 3 types
newtypenewtype MonadState (m :: Type -> Type) a
#

Derive HasState from m's MonadState instance.

Constructors

  • MonadState (m a)
Instances9HasSource, HasState, HasSink, Monad, Functor, Applicative, …
  • MonadState s m => HasSource tag s (MonadState m)Defined in capability-0.5.0.1 · Capability.Source.Internal.Strategies · orphan
  • MonadState s m => HasState tag s (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies · orphan
  • MonadState s m => HasSink tag s (MonadState m)Defined in capability-0.5.0.1 · Capability.Sink.Internal.Strategies · orphan
  • Monad m => Monad (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Functor m => Functor (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Applicative m => Applicative (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • MonadIO m => MonadIO (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • PrimMonad m => PrimMonad (MonadState m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • type PrimState (MonadState m) = PrimState mDefined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
newtypenewtype ReaderIORef (m :: k -> Type) (a :: k)
#

Derive a state monad from a reader over an IORef.

Example:

newtype MyState m a = MyState (ReaderT (IORef Int) m a)
  deriving (Functor, Applicative, Monad)
  deriving HasState "foo" Int via
    ReaderIORef (MonadReader (ReaderT (IORef Int) m))

See ReaderRef for a more generic strategy.

Constructors

  • ReaderIORef (m a)
Instances6HasSource, HasState, HasSink, Monad, Functor, Applicative
  • (HasSource tag (IORef s) m, MonadIO m) => HasSource tag s (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.Source.Internal.Strategies · orphan
  • (HasReader tag (IORef s) m, MonadIO m) => HasState tag s (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies · orphan
  • (HasSource tag (IORef s) m, MonadIO m) => HasSink tag s (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.Sink.Internal.Strategies · orphan
  • Monad m => Monad (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Functor m => Functor (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Applicative m => Applicative (ReaderIORef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
newtypenewtype ReaderRef (m :: Type -> Type) a
#

Derive a state monad from a reader over a mutable reference.

Mutable references are available in a PrimMonad. The corresponding PrimState has to match the MCState of the reference. This constraint makes a stand-alone deriving clause necessary.

Example:

newtype MyState m a = MyState (ReaderT (IORef Int) m a)
  deriving (Functor, Applicative, Monad)
deriving via ReaderRef (MonadReader (ReaderT (IORef Int) m))
  instance (PrimMonad m, PrimState m ~ PrimState IO)
  => HasState "foo" Int (MyState m)

See ReaderIORef for a specialized version over IORef.

Constructors

  • ReaderRef (m a)
Instances9HasSource, HasState, HasSink, Monad, Functor, Applicative, …
  • (MutableRef ref, RefElement ref ~ s, HasSource tag ref m, PrimMonad m, PrimState m ~ MCState ref) => HasSource tag s (ReaderRef m)Defined in capability-0.5.0.1 · Capability.Source.Internal.Strategies · orphan
  • (MutableRef ref, RefElement ref ~ s, HasReader tag ref m, PrimMonad m, PrimState m ~ MCState ref) => HasState tag s (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies · orphan
  • (MutableRef ref, RefElement ref ~ s, HasSource tag ref m, PrimMonad m, PrimState m ~ MCState ref) => HasSink tag s (ReaderRef m)Defined in capability-0.5.0.1 · Capability.Sink.Internal.Strategies · orphan
  • Monad m => Monad (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Functor m => Functor (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • Applicative m => Applicative (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • MonadIO m => MonadIO (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • PrimMonad m => PrimMonad (ReaderRef m)Defined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common
  • type PrimState (ReaderRef m) = PrimState mDefined in capability-0.5.0.1 · Capability.State.Internal.Strategies.Common

Orphan instances

9 instances
  • MonadState s m => HasState tag s (MonadState m)
  • (HasState tag s m, MonadTrans t, Monad (t m)) => HasState tag s (Lift (t m))

    Lift one layer in a monad transformer stack.

  • (MutableRef ref, RefElement ref ~ s, HasReader tag ref m, PrimMonad m, PrimState m ~ MCState ref) => HasState tag s (ReaderRef m)
  • (HasReader tag (IORef s) m, MonadIO m) => HasState tag s (ReaderIORef m)
  • (Coercible from to, HasState tag from m, forall x y. Coercible x y => Coercible (m x) (m y)) => HasState tag to (Coerce to m)

    Convert the state using safe coercion.

  • HasState oldtag s m => HasState newtag s (Rename oldtag m)

    Rename the tag.

  • (forall x. Coercible (m x) (t2 (t1 m) x), Monad m, HasState tag s (t2 (t1 m))) => HasState tag s ((:.:) t2 t1 m)

    Compose two accessors.

  • (tag ~ field, HasField' field record v, HasState oldtag record m) => HasState tag v (Field field oldtag m)

    Zoom in on the record field field of type v in the state record.

  • (tag ~ pos, HasPosition' pos struct v, HasState oldtag struct m) => HasState tag v (Pos pos oldtag m)

    Zoom in on the field at position pos of type v in the state struct.