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

Test.Credit.Heap.Base

Documentation

data HeapOp a Source #

Constructors

Insert a 
Merge 
SplitMin 

Instances

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

Defined in Test.Credit.Heap.Base

Methods

arbitrary :: Gen (HeapOp a) #

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

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

Defined in Test.Credit.Heap.Base

Methods

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

show :: HeapOp a -> String #

showList :: [HeapOp a] -> ShowS #

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

Defined in Test.Credit.Heap.Base

Methods

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

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

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

Defined in Test.Credit.Heap.Base

Methods

compare :: HeapOp a -> HeapOp a -> Ordering #

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

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

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

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

max :: HeapOp a -> HeapOp a -> HeapOp a #

min :: HeapOp a -> HeapOp a -> HeapOp a #

(Arbitrary a, Ord a, BoundedHeap h, Show a) => DataStructure (BH h a) (HeapOp a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => BH h a m Source #

action :: MonadInherit m => BH h a m -> HeapOp a -> (Credit, m (BH h a m)) Source #

(Arbitrary a, Ord a, BoundedHeap h, Show a) => DataStructure (H h a) (HeapOp a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => H h a m Source #

action :: MonadInherit m => H h a m -> HeapOp a -> (Credit, m (H h a m)) Source #

class Heap (h :: Type -> (Type -> Type) -> Type) where Source #

Methods

empty :: MonadCredit m => m (h a m) Source #

insert :: (MonadCredit m, Ord a) => a -> h a m -> m (h a m) Source #

merge :: (MonadCredit m, Ord a) => h a m -> h a m -> m (h a m) Source #

splitMin :: (MonadCredit m, Ord a) => h a m -> m (Maybe (a, h a m)) Source #

Instances

Instances details
Heap FingerHeap Source # 
Instance details

Defined in Test.Credit.Finger

Methods

empty :: MonadCredit m => m (FingerHeap a m) Source #

insert :: (MonadCredit m, Ord a) => a -> FingerHeap a m -> m (FingerHeap a m) Source #

merge :: (MonadCredit m, Ord a) => FingerHeap a m -> FingerHeap a m -> m (FingerHeap a m) Source #

splitMin :: (MonadCredit m, Ord a) => FingerHeap a m -> m (Maybe (a, FingerHeap a m)) Source #

Heap Binomial Source # 
Instance details

Defined in Test.Credit.Heap.Binomial

Methods

empty :: MonadCredit m => m (Binomial a m) Source #

insert :: (MonadCredit m, Ord a) => a -> Binomial a m -> m (Binomial a m) Source #

merge :: (MonadCredit m, Ord a) => Binomial a m -> Binomial a m -> m (Binomial a m) Source #

splitMin :: (MonadCredit m, Ord a) => Binomial a m -> m (Maybe (a, Binomial a m)) Source #

Heap LazyPairing Source # 
Instance details

Defined in Test.Credit.Heap.LazyPairing

Methods

empty :: MonadCredit m => m (LazyPairing a m) Source #

insert :: (MonadCredit m, Ord a) => a -> LazyPairing a m -> m (LazyPairing a m) Source #

merge :: (MonadCredit m, Ord a) => LazyPairing a m -> LazyPairing a m -> m (LazyPairing a m) Source #

splitMin :: (MonadCredit m, Ord a) => LazyPairing a m -> m (Maybe (a, LazyPairing a m)) Source #

Heap Scheduled Source # 
Instance details

Defined in Test.Credit.Heap.Scheduled

Methods

empty :: MonadCredit m => m (Scheduled a m) Source #

insert :: (MonadCredit m, Ord a) => a -> Scheduled a m -> m (Scheduled a m) Source #

merge :: (MonadCredit m, Ord a) => Scheduled a m -> Scheduled a m -> m (Scheduled a m) Source #

splitMin :: (MonadCredit m, Ord a) => Scheduled a m -> m (Maybe (a, Scheduled a m)) Source #

Heap (Pairing :: Type -> (Type -> Type) -> Type) Source # 
Instance details

Defined in Test.Credit.Heap.Pairing

Methods

empty :: MonadCredit m => m (Pairing a m) Source #

insert :: (MonadCredit m, Ord a) => a -> Pairing a m -> m (Pairing a m) Source #

merge :: (MonadCredit m, Ord a) => Pairing a m -> Pairing a m -> m (Pairing a m) Source #

splitMin :: (MonadCredit m, Ord a) => Pairing a m -> m (Maybe (a, Pairing a m)) Source #

class Heap h => BoundedHeap (h :: Type -> (Type -> Type) -> Type) where Source #

Methods

hcost :: Size -> HeapOp a -> Credit Source #

Instances

Instances details
BoundedHeap FingerHeap Source # 
Instance details

Defined in Test.Credit.Finger

Methods

hcost :: Size -> HeapOp a -> Credit Source #

BoundedHeap Binomial Source # 
Instance details

Defined in Test.Credit.Heap.Binomial

Methods

hcost :: Size -> HeapOp a -> Credit Source #

BoundedHeap LazyPairing Source # 
Instance details

Defined in Test.Credit.Heap.LazyPairing

Methods

hcost :: Size -> HeapOp a -> Credit Source #

BoundedHeap Scheduled Source # 
Instance details

Defined in Test.Credit.Heap.Scheduled

Methods

hcost :: Size -> HeapOp a -> Credit Source #

BoundedHeap (Pairing :: Type -> (Type -> Type) -> Type) Source # 
Instance details

Defined in Test.Credit.Heap.Pairing

Methods

hcost :: Size -> HeapOp a -> Credit Source #

data H (h :: Type -> k -> Type) a (m :: k) Source #

Instances

Instances details
MemoryCell m (h (PrettyCell a) m) => MemoryCell m (H h a m) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

prettyCell :: H h a m -> m Memory Source #

MemoryStructure (h (PrettyCell a)) => MemoryStructure (H h a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

prettyStructure :: MonadMemory m => H h a m -> m Memory Source #

(Arbitrary a, Ord a, BoundedHeap h, Show a) => DataStructure (H h a) (HeapOp a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => H h a m Source #

action :: MonadInherit m => H h a m -> HeapOp a -> (Credit, m (H h a m)) Source #

data BH (h :: Type -> k -> Type) a (m :: k) Source #

Instances

Instances details
MemoryCell m (h (PrettyCell a) m) => MemoryCell m (BH h a m) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

prettyCell :: BH h a m -> m Memory Source #

MemoryStructure (h (PrettyCell a)) => MemoryStructure (BH h a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

prettyStructure :: MonadMemory m => BH h a m -> m Memory Source #

(Arbitrary a, Ord a, BoundedHeap h, Show a) => DataStructure (BH h a) (HeapOp a) Source # 
Instance details

Defined in Test.Credit.Heap.Base

Methods

create :: forall (m :: Type -> Type). MonadInherit m => BH h a m Source #

action :: MonadInherit m => BH h a m -> HeapOp a -> (Credit, m (BH h a m)) Source #