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

Test.Credit.Sortable.Base

Documentation

data SortableOp a Source #

Constructors

Add a 
Sort 

Instances

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

Defined in Test.Credit.Sortable.Base

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

Defined in Test.Credit.Sortable.Base

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

Defined in Test.Credit.Sortable.Base

Methods

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

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

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

Defined in Test.Credit.Sortable.Base

(Arbitrary a, Ord a, BoundedSortable q, Show a) => DataStructure (S q a) (SortableOp a) Source # 
Instance details

Defined in Test.Credit.Sortable.Base

Methods

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

action :: MonadInherit m => S q a m -> SortableOp a -> (Credit, m (S q a m)) Source #

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

Methods

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

add :: (MonadCredit m, Ord a) => a -> q a m -> m (q a m) Source #

sort :: (MonadCredit m, Ord a) => q a m -> m [a] Source #

Instances

Instances details
Sortable FingerSort Source # 
Instance details

Defined in Test.Credit.Finger

Methods

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

add :: (MonadCredit m, Ord a) => a -> FingerSort a m -> m (FingerSort a m) Source #

sort :: (MonadCredit m, Ord a) => FingerSort a m -> m [a] Source #

Sortable MergeSort Source # 
Instance details

Defined in Test.Credit.Sortable.MergeSort

Methods

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

add :: (MonadCredit m, Ord a) => a -> MergeSort a m -> m (MergeSort a m) Source #

sort :: (MonadCredit m, Ord a) => MergeSort a m -> m [a] Source #

Sortable SMergeSort Source # 
Instance details

Defined in Test.Credit.Sortable.Scheduled

Methods

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

add :: (MonadCredit m, Ord a) => a -> SMergeSort a m -> m (SMergeSort a m) Source #

sort :: (MonadCredit m, Ord a) => SMergeSort a m -> m [a] Source #

class Sortable q => BoundedSortable (q :: Type -> (Type -> Type) -> Type) where Source #

Methods

scost :: Size -> SortableOp a -> Credit Source #

Instances

Instances details
BoundedSortable FingerSort Source # 
Instance details

Defined in Test.Credit.Finger

Methods

scost :: Size -> SortableOp a -> Credit Source #

BoundedSortable MergeSort Source # 
Instance details

Defined in Test.Credit.Sortable.MergeSort

Methods

scost :: Size -> SortableOp a -> Credit Source #

BoundedSortable SMergeSort Source # 
Instance details

Defined in Test.Credit.Sortable.Scheduled

Methods

scost :: Size -> SortableOp a -> Credit Source #

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

Constructors

E 
S Size (q (PrettyCell a) m) 

Instances

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

Defined in Test.Credit.Sortable.Base

Methods

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

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

Defined in Test.Credit.Sortable.Base

Methods

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

(Arbitrary a, Ord a, BoundedSortable q, Show a) => DataStructure (S q a) (SortableOp a) Source # 
Instance details

Defined in Test.Credit.Sortable.Base

Methods

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

action :: MonadInherit m => S q a m -> SortableOp a -> (Credit, m (S q a m)) Source #

act :: (MonadCredit m, Sortable q, Ord a) => Size -> q (PrettyCell a) m -> SortableOp a -> m (S q a m) Source #