effet-0.2.0.0: An Effect System based on Type Classes
Copyright(c) Michael Szvetits 2020
LicenseBSD3 (see the file LICENSE)
Maintainertypedbyte@qualified.name
Stabilitystable
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Control.Effect.Machinery.Default

Description

This module provides default implementations for the MonadTrans and MonadTransControl type classes.

Synopsis

Documentation

newtype Default m a Source #

This type provides default implementations for the MonadTrans and MonadTransControl type classes. The type is intended to be targeted by the DerivingVia language extension when writing an effect handler newtype that wraps a monad m a :

    newtype MyHandler m a =
      MyHandler { runMyHandler :: m a }
        deriving (Applicative, Functor, Monad, MonadIO)
        deriving (MonadTrans, MonadTransControl) via Default
        deriving (MonadBase b, MonadBaseControl b)

Constructors

Default 

Fields

Instances

Instances details
MonadBase b m => MonadBase b (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

liftBase :: b α -> Default m α #

MonadBaseControl b m => MonadBaseControl b (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Associated Types

type StM (Default m) a #

Methods

liftBaseWith :: (RunInBase (Default m) b -> b a) -> Default m a #

restoreM :: StM (Default m) a -> Default m a #

MonadTrans (Default :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

lift :: Monad m => m a -> Default m a #

MonadTransControl (Default :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Associated Types

type StT Default a #

Methods

liftWith :: Monad m => (Run Default -> m a) -> Default m a #

restoreT :: Monad m => m (StT Default a) -> Default m a #

Monad m => Monad (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

(>>=) :: Default m a -> (a -> Default m b) -> Default m b #

(>>) :: Default m a -> Default m b -> Default m b #

return :: a -> Default m a #

Functor m => Functor (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

fmap :: (a -> b) -> Default m a -> Default m b #

(<$) :: a -> Default m b -> Default m a #

Applicative m => Applicative (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

pure :: a -> Default m a #

(<*>) :: Default m (a -> b) -> Default m a -> Default m b #

liftA2 :: (a -> b -> c) -> Default m a -> Default m b -> Default m c #

(*>) :: Default m a -> Default m b -> Default m b #

(<*) :: Default m a -> Default m b -> Default m a #

MonadIO m => MonadIO (Default m) Source # 
Instance details

Defined in Control.Effect.Machinery.Default

Methods

liftIO :: IO a -> Default m a #

type StT (Default :: (Type -> Type) -> Type -> Type) a Source # 
Instance details

Defined in Control.Effect.Machinery.Default

type StT (Default :: (Type -> Type) -> Type -> Type) a = a
type StM (Default m) a Source # 
Instance details

Defined in Control.Effect.Machinery.Default

type StM (Default m) a = StM m a