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

Test.Credit.Sortable.MergeSort

Documentation

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

Constructors

MergeSort Size (Thunk m (MLazyCon m) [[a]]) 

Instances

Instances details
BoundedSortable MergeSort Source # 
Instance details

Defined in Test.Credit.Sortable.MergeSort

Methods

scost :: Size -> SortableOp a -> Credit 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 #

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

Defined in Test.Credit.Sortable.MergeSort

Methods

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

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

Defined in Test.Credit.Sortable.MergeSort

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

addSeg :: (MonadCredit m, Ord a) => [a] -> [[a]] -> Size -> m [[a]] Source #

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

Constructors

Empty :: forall (m :: Type -> Type) a1. MLazyCon m [[a1]] 
AddSeg :: forall a1 (m :: Type -> Type). Ord a1 => [a1] -> Thunk m (MLazyCon m) [[a1]] -> Size -> MLazyCon m [[a1]] 

Instances

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

Defined in Test.Credit.Sortable.MergeSort

Methods

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

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

Defined in Test.Credit.Sortable.MergeSort

Methods

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

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