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

Test.Credit.RandomAccess.Base

Documentation

data RandomAccessOp a Source #

Constructors

Cons a 
Uncons 
Lookup Int 
Update Int a 

Instances

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

Defined in Test.Credit.RandomAccess.Base

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

Defined in Test.Credit.RandomAccess.Base

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

Defined in Test.Credit.RandomAccess.Base

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

Defined in Test.Credit.RandomAccess.Base

(Arbitrary a, BoundedRandomAccess q, Show a) => DataStructure (RA q a) (RandomAccessOp a) Source # 
Instance details

Defined in Test.Credit.RandomAccess.Base

Methods

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

action :: MonadInherit m => RA q a m -> RandomAccessOp a -> (Credit, m (RA q a m)) Source #

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

Methods

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

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

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

lookup :: MonadCredit m => Int -> q a m -> m (Maybe a) Source #

update :: MonadCredit m => Int -> a -> q a m -> m (q a m) Source #

Instances

Instances details
RandomAccess FingerRA Source # 
Instance details

Defined in Test.Credit.Finger

Methods

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

cons :: MonadCredit m => a -> FingerRA a m -> m (FingerRA a m) Source #

uncons :: MonadCredit m => FingerRA a m -> m (Maybe (a, FingerRA a m)) Source #

lookup :: MonadCredit m => Int -> FingerRA a m -> m (Maybe a) Source #

update :: MonadCredit m => Int -> a -> FingerRA a m -> m (FingerRA a m) Source #

RandomAccess BinaryRA Source # 
Instance details

Defined in Test.Credit.RandomAccess.Binary

Methods

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

cons :: MonadCredit m => a -> BinaryRA a m -> m (BinaryRA a m) Source #

uncons :: MonadCredit m => BinaryRA a m -> m (Maybe (a, BinaryRA a m)) Source #

lookup :: MonadCredit m => Int -> BinaryRA a m -> m (Maybe a) Source #

update :: MonadCredit m => Int -> a -> BinaryRA a m -> m (BinaryRA a m) Source #

RandomAccess ZerolessRA Source # 
Instance details

Defined in Test.Credit.RandomAccess.Zeroless

Methods

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

cons :: MonadCredit m => a -> ZerolessRA a m -> m (ZerolessRA a m) Source #

uncons :: MonadCredit m => ZerolessRA a m -> m (Maybe (a, ZerolessRA a m)) Source #

lookup :: MonadCredit m => Int -> ZerolessRA a m -> m (Maybe a) Source #

update :: MonadCredit m => Int -> a -> ZerolessRA a m -> m (ZerolessRA a m) Source #

class RandomAccess q => BoundedRandomAccess (q :: Type -> (Type -> Type) -> Type) where Source #

Instances

Instances details
BoundedRandomAccess FingerRA Source # 
Instance details

Defined in Test.Credit.Finger

BoundedRandomAccess BinaryRA Source # 
Instance details

Defined in Test.Credit.RandomAccess.Binary

BoundedRandomAccess ZerolessRA Source # 
Instance details

Defined in Test.Credit.RandomAccess.Zeroless

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

Constructors

E 
RA Size (q (PrettyCell a) m) 

Instances

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

Defined in Test.Credit.RandomAccess.Base

Methods

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

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

Defined in Test.Credit.RandomAccess.Base

Methods

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

(Arbitrary a, BoundedRandomAccess q, Show a) => DataStructure (RA q a) (RandomAccessOp a) Source # 
Instance details

Defined in Test.Credit.RandomAccess.Base

Methods

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

action :: MonadInherit m => RA q a m -> RandomAccessOp a -> (Credit, m (RA q a m)) Source #

idx :: Int -> Size -> Int Source #

act :: (MonadCredit m, RandomAccess q) => Size -> q (PrettyCell a) m -> RandomAccessOp a -> m (RA q a m) Source #