io-classes
Safe HaskellNone
LanguageGHC2021

Control.Monad.Class.MonadUnique

Description

A generalisation of the Data.Unique API to both IO and IOSim.

Documentation

class (Monad m, Eq (Unique m), Ord (Unique m)) => MonadUnique (m :: Type -> Type) where Source #

Minimal complete definition

Nothing

Associated Types

type Unique (m :: Type -> Type) = (unique :: Type) | unique -> m Source #

Methods

newUnique :: m (Unique m) Source #

default newUnique :: forall (t :: (Type -> Type) -> Type -> Type) (n :: Type -> Type). (m ~ t n, Unique m ~ UniqueFor t n, MonadTrans t, MonadUnique n) => m (Unique m) Source #

hashUnique :: Unique m -> Int Source #

default hashUnique :: forall (t :: (Type -> Type) -> Type -> Type) (n :: Type -> Type). (m ~ t n, Unique m ~ UniqueFor t n, MonadUnique n) => Unique m -> Int Source #

Instances

Instances details
MonadUnique IO Source # 
Instance details

Defined in Control.Monad.Class.MonadUnique

Associated Types

type Unique IO 
Instance details

Defined in Control.Monad.Class.MonadUnique

MonadUnique m => MonadUnique (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Class.MonadUnique

Associated Types

type Unique (ReaderT r m) 
Instance details

Defined in Control.Monad.Class.MonadUnique

type Unique (ReaderT r m) = UniqueFor (ReaderT r) m

newtype UniqueFor (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) Source #

Constructors

MkUniqueFor 

Fields

Instances

Instances details
MonadUnique m => Eq (UniqueFor r m) Source # 
Instance details

Defined in Control.Monad.Class.MonadUnique

Methods

(==) :: UniqueFor r m -> UniqueFor r m -> Bool #

(/=) :: UniqueFor r m -> UniqueFor r m -> Bool #

MonadUnique m => Ord (UniqueFor r m) Source # 
Instance details

Defined in Control.Monad.Class.MonadUnique

Methods

compare :: UniqueFor r m -> UniqueFor r m -> Ordering #

(<) :: UniqueFor r m -> UniqueFor r m -> Bool #

(<=) :: UniqueFor r m -> UniqueFor r m -> Bool #

(>) :: UniqueFor r m -> UniqueFor r m -> Bool #

(>=) :: UniqueFor r m -> UniqueFor r m -> Bool #

max :: UniqueFor r m -> UniqueFor r m -> UniqueFor r m #

min :: UniqueFor r m -> UniqueFor r m -> UniqueFor r m #