creditmonad-1.0.0: Reasoning about amortized time complexity
Safe HaskellNone
LanguageGHC2021

Test.Credit.Deque.ImplicitCat

Documentation

data ImplicitCat a (m :: Type -> Type) Source #

Constructors

Shallow (BDeque a m) 
Deep 

Fields

Instances

Instances details
BoundedDeque ImplicitCat Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

qcost :: Size -> DequeOp a -> Credit Source #

Deque ImplicitCat Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

empty :: MonadInherit m => m (ImplicitCat a m) Source #

cons :: MonadInherit m => a -> ImplicitCat a m -> m (ImplicitCat a m) Source #

snoc :: MonadInherit m => ImplicitCat a m -> a -> m (ImplicitCat a m) Source #

uncons :: MonadInherit m => ImplicitCat a m -> m (Maybe (a, ImplicitCat a m)) Source #

unsnoc :: MonadInherit m => ImplicitCat a m -> m (Maybe (ImplicitCat a m, a)) Source #

concat :: MonadInherit m => ImplicitCat a m -> ImplicitCat a m -> m (ImplicitCat a m) Source #

(MonadMemory m, MemoryCell m a) => MemoryCell m (ImplicitCat a m) Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

prettyCell :: ImplicitCat a m -> m Memory Source #

Pretty a => MemoryStructure (ImplicitCat (PrettyCell a)) Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

data ILazyCon (m :: Type -> Type) a where Source #

Constructors

IPay :: forall (m :: Type -> Type) a1 a. Thunk m (ILazyCon m) (ImplicitCat (CmpdElem a1 m) m) -> m a -> ILazyCon m a 
ILazy :: forall (m :: Type -> Type) a. m a -> ILazyCon m a 

Instances

Instances details
MonadCredit m => HasStep (ILazyCon m :: Type -> Type) (m :: Type -> Type) Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

step :: ILazyCon m a -> m a Source #

(MonadMemory m, MemoryCell m a) => MemoryCell m (ILazyCon m a) Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

prettyCell :: ILazyCon m a -> m Memory Source #

data CmpdElem a (m :: Type -> Type) Source #

Constructors

Simple (BDeque a m) 
Cmpd 

Fields

Instances

Instances details
(MonadMemory m, MemoryCell m a) => MemoryCell m (CmpdElem a m) Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

prettyCell :: CmpdElem a m -> m Memory Source #

deepDanger :: forall a (m :: Type -> Type). BDeque a m -> Credit Source #

deep :: MonadCredit m => BDeque a m -> Thunk m (ILazyCon m) (ImplicitCat (CmpdElem a m) m) -> BDeque a m -> Thunk m (ILazyCon m) (ImplicitCat (CmpdElem a m) m) -> BDeque a m -> m (ImplicitCat a m) Source #

cmpdDanger :: forall a (m :: Type -> Type). BDeque a m -> Credit Source #

cmpd :: MonadCredit m => BDeque a m -> Thunk m (ILazyCon m) (ImplicitCat (CmpdElem a m) m) -> BDeque a m -> m (CmpdElem a m) Source #

isEmpty :: forall a (m :: Type -> Type). ImplicitCat a m -> Bool Source #

share :: MonadInherit m => BDeque a m -> BDeque a m -> m (BDeque a m, BDeque a m, BDeque a m) Source #

dappendL :: MonadInherit m => BDeque a m -> BDeque a m -> m (BDeque a m) Source #

dappendR :: MonadInherit m => BDeque a m -> BDeque a m -> m (BDeque a m) Source #

uncons' :: MonadInherit m => ImplicitCat a m -> m (Maybe (a, Thunk m (ILazyCon m) (ImplicitCat a m))) Source #

unsnoc' :: MonadInherit m => ImplicitCat a m -> m (Maybe (Thunk m (ILazyCon m) (ImplicitCat a m), a)) Source #