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

Test.Credit.Deque.Base

Documentation

data DequeOp a Source #

Constructors

Cons a 
Snoc a 
Uncons 
Unsnoc 
Concat 

Instances

Instances details
Arbitrary a => Arbitrary (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

arbitrary :: Gen (DequeOp a) #

shrink :: DequeOp a -> [DequeOp a] #

Show a => Show (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

showsPrec :: Int -> DequeOp a -> ShowS #

show :: DequeOp a -> String #

showList :: [DequeOp a] -> ShowS #

Eq a => Eq (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

(==) :: DequeOp a -> DequeOp a -> Bool #

(/=) :: DequeOp a -> DequeOp a -> Bool #

Ord a => Ord (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

compare :: DequeOp a -> DequeOp a -> Ordering #

(<) :: DequeOp a -> DequeOp a -> Bool #

(<=) :: DequeOp a -> DequeOp a -> Bool #

(>) :: DequeOp a -> DequeOp a -> Bool #

(>=) :: DequeOp a -> DequeOp a -> Bool #

max :: DequeOp a -> DequeOp a -> DequeOp a #

min :: DequeOp a -> DequeOp a -> DequeOp a #

(Arbitrary a, BoundedDeque q, Show a) => DataStructure (BD q a) (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => BD q a m Source #

action :: MonadInherit m => BD q a m -> DequeOp a -> (Credit, m (BD q a m)) Source #

(Arbitrary a, BoundedDeque q, Show a) => DataStructure (D q a) (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => D q a m Source #

action :: MonadInherit m => D q a m -> DequeOp a -> (Credit, m (D q a m)) Source #

class Deque (q :: Type -> (Type -> Type) -> Type) where Source #

Methods

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

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

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

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

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

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

Instances

Instances details
Deque BDeque Source # 
Instance details

Defined in Test.Credit.Deque.Bankers

Methods

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

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

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

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

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

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

Deque CatDeque Source # 
Instance details

Defined in Test.Credit.Deque.Catenable

Methods

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

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

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

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

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

concat :: MonadInherit m => CatDeque a m -> CatDeque a m -> m (CatDeque a m) 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 #

Deque RDeque Source # 
Instance details

Defined in Test.Credit.Deque.Realtime

Methods

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

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

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

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

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

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

Deque SimpleCat Source # 
Instance details

Defined in Test.Credit.Deque.SimpleCat

Methods

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

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

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

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

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

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

Deque FingerDeque Source # 
Instance details

Defined in Test.Credit.Finger

Methods

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

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

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

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

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

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

class Deque q => BoundedDeque (q :: Type -> (Type -> Type) -> Type) where Source #

Methods

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

Instances

Instances details
BoundedDeque BDeque Source # 
Instance details

Defined in Test.Credit.Deque.Bankers

Methods

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

BoundedDeque CatDeque Source # 
Instance details

Defined in Test.Credit.Deque.Catenable

Methods

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

BoundedDeque ImplicitCat Source # 
Instance details

Defined in Test.Credit.Deque.ImplicitCat

Methods

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

BoundedDeque RDeque Source # 
Instance details

Defined in Test.Credit.Deque.Realtime

Methods

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

BoundedDeque SimpleCat Source # 
Instance details

Defined in Test.Credit.Deque.SimpleCat

Methods

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

BoundedDeque FingerDeque Source # 
Instance details

Defined in Test.Credit.Finger

Methods

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

data D (q :: Type -> k -> Type) a (m :: k) Source #

Instances

Instances details
MemoryCell m (q (PrettyCell a) m) => MemoryCell m (D q a m) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

prettyCell :: D q a m -> m Memory Source #

MemoryStructure (q (PrettyCell a)) => MemoryStructure (D q a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

prettyStructure :: MonadMemory m => D q a m -> m Memory Source #

(Arbitrary a, BoundedDeque q, Show a) => DataStructure (D q a) (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => D q a m Source #

action :: MonadInherit m => D q a m -> DequeOp a -> (Credit, m (D q a m)) Source #

data BD (q :: Type -> k -> Type) a (m :: k) Source #

Instances

Instances details
MemoryCell m (q (PrettyCell a) m) => MemoryCell m (BD q a m) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

prettyCell :: BD q a m -> m Memory Source #

MemoryStructure (q (PrettyCell a)) => MemoryStructure (BD q a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

prettyStructure :: MonadMemory m => BD q a m -> m Memory Source #

(Arbitrary a, BoundedDeque q, Show a) => DataStructure (BD q a) (DequeOp a) Source # 
Instance details

Defined in Test.Credit.Deque.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => BD q a m Source #

action :: MonadInherit m => BD q a m -> DequeOp a -> (Credit, m (BD q a m)) Source #