container-1.0.1: Containers abstraction and utilities.

Safe HaskellNone
LanguageHaskell2010

Data.Container.Class

Synopsis

Documentation

data Impossible Source

Constructors

Impossible 

type family Container a Source

Instances

type Container (Vector a) = Vector a Source 
type Container (Resizable s a) = Resizable s a Source 
type Container (Reusable idx a) = Reusable idx a Source 
type Container (Weak f a) = Weak f a Source 
type Container (Auto idx style a) = Container (Reusable idx (Resizable style a)) Source 

type family Item a Source

Instances

type Item IntSet = Int Source 
type Item Text = Char Source 
type Item LazyText = Char Source 
type Item (Vector a) = a Source 
type Item (Resizable s a) = Item (Container a) Source 
type Item (Reusable idx a) = Item (Container a) Source 
type Item (Weak f a) = WeakData (Item (Container a)) Source 
type Item (Auto idx style a) = Item (Reusable idx (Resizable style a)) Source 

type family DataStore a Source

Points to the real structure handling the data. Used mainly internally.

Instances

type DataStore (Vector a) = Vector a Source 
type DataStore (Resizable s a) = Container a Source 
type DataStore (Reusable idx a) = Container a Source 
type DataStore (Weak f a) = Container a Source 
type DataStore (Auto idx style a) = DataStore (Reusable idx (Resizable style a)) Source 

class HasContainerM m a where Source

Minimal complete definition

Nothing

Methods

viewContainerM :: a -> m (Container a) Source

setContainerM :: Container a -> a -> m a Source

Instances

Monad m => HasContainerM m (Resizable s a) Source 
Monad m => HasContainerM m (Reusable idx a) Source 
Monad m => HasContainerM m (Weak f a) Source 
Monad m => HasContainerM m (Auto idx style a) Source 

class HasContainerM m a => IsContainerM m a where Source

Methods

fromContainerM :: Container a -> m a Source

Instances

Monad m => IsContainerM m (Resizable s a) Source 
Monad m => IsContainerM m (Reusable idx a) Source 
Monad m => IsContainerM m (Weak f a) Source 
Monad m => IsContainerM m (Auto idx style a) Source 

withContainerM :: (Monad m, HasContainerM m a) => (Container a -> m (Container a)) -> a -> m a Source

withContainerM' :: (Monad m, HasContainerM m a) => (Container a -> Container a) -> a -> m a Source

type family PrimStoreOf a Source

Equations

PrimStoreOf a = PrimStoreOf' (DataStore a) a 

data Info idx el cont Source

Constructors

Info idx el cont 

type ElInfo el = Info Unknown (Known el) Source

type IdxInfo idx = Info (Known idx) Unknown Source

type IdxElInfo idx el = Info (Known idx) (Known el) Source

data Res datas a Source

Constructors

Res datas a 

Instances

Functor (Res datas) Source 
Foldable (Res datas) Source 
Traversable (Res datas) Source 
(Show datas, Show a) => Show (Res datas a) Source 

type Result op info mods = Res (Result_ op info mods) Source

type PrimResult op ms a = Result op (PrimInfo a) ms Source

type ElResult op ms el a = Result op (ElInfo el a) ms Source

type IdxResult op ms idx a = Result op (IdxInfo idx a) ms Source

type IdxElResult op ms idx el a = Result op (IdxElInfo idx el a) ms Source

type family Result_ op info mods Source

Equations

Result_ op info `[]` = () 
Result_ op info (m : ms) = (ModResult op info m, Result_ op info ms) 

type family IdxMod op ix Source

Instances

type IdxMod TracksElemsOp a = [a] Source 
type IdxMod IndexableOp a = a Source 
type IdxMod ReservableOp a = a Source 
type IdxMod InsertableOp a = a Source 
type IdxMod RemovableOp a = a Source 
type IdxMod AddableOp a = a Source 
type IdxMod PrependableOp a = a Source 
type IdxMod AppendableOp a = a Source 
type IdxMod GrowableOp a = [a] Source 
type IdxMod ExpandableOp a = [a] Source 
type IdxMod AllocableOp a = [a] Source 
type IdxMod SingletonOp a = a Source 

type family ModResult op info mod Source

Instances

type ModResult op (Info (Knowledge *) (Knowledge *) * (Unknown *) el cont) Ixed = IdxMod op (Index cont) Source 
type ModResult op (Info (Knowledge *) (Knowledge *) * (Known * idx) el cont) Ixed = IdxMod op idx Source 

type family GetOpts m :: [*] Source

Equations

GetOpts `[]` = `[]` 
GetOpts (P a : ms) = a : GetOpts ms 
GetOpts (N : ms) = GetOpts ms 

class Ctx ms m cont => MeasurableQM ms ps m cont where Source

Methods

sizeQM :: Query ms ps -> cont -> m (PrimResult MeasurableOp ms (Container cont) Int) Source

class Ctx ms m cont => MinBoundedQM ms ps m idx cont where Source

Methods

minBoundQM :: Query ms ps -> cont -> m (IdxResult MinBoundedOp ms idx (Container cont) idx) Source

class Ctx ms m cont => MaxBoundedQM ms ps m idx cont where Source

Methods

maxBoundQM :: Query ms ps -> cont -> m (IdxResult MaxBoundedOp ms idx (Container cont) idx) Source

type BoundedQM ms ps m idx cont = (MinBoundedQM ms ps m idx cont, MaxBoundedQM ms ps m idx cont) Source

type BoundedM m idx cont = Simple MaxBoundedQM m idx cont Source

type BoundedQ ms ps m idx cont = MaxBoundedQM ms ps Identity idx cont Source

type Bounded idx cont = BoundedM Identity idx cont Source

sizeM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ MeasurableOp (PrimInfo (Container cont)) ms) Int)) a, MeasurableQM ms ps m cont) => a Source

size' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ MeasurableOp (PrimInfo (Container cont)) ms) Int) c, MeasurableQM ms ps Identity cont) => c Source

sizeM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX (Int, Result_ MeasurableOp (PrimInfo (Container cont)) ms) b, MeasurableQM ms ps f cont) => a Source

size :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX (Int, Result_ MeasurableOp (PrimInfo (Container cont)) ms) b, MeasurableQM ms ps Identity cont) => c Source

minBoundM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ MinBoundedOp (IdxInfo idx (Container cont)) ms) idx)) a, MinBoundedQM ms ps m idx cont) => a Source

minBound' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ MinBoundedOp (IdxInfo idx (Container cont)) ms) idx) c, MinBoundedQM ms ps Identity idx cont) => c Source

minBoundM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX (t, Result_ MinBoundedOp (IdxInfo t (Container cont)) ms) b, MinBoundedQM ms ps f t cont) => a Source

minBound :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX (t, Result_ MinBoundedOp (IdxInfo t (Container cont)) ms) b, MinBoundedQM ms ps Identity t cont) => c Source

maxBoundM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ MaxBoundedOp (IdxInfo idx (Container cont)) ms) idx)) a, MaxBoundedQM ms ps m idx cont) => a Source

maxBound' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ MaxBoundedOp (IdxInfo idx (Container cont)) ms) idx) c, MaxBoundedQM ms ps Identity idx cont) => c Source

maxBoundM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX (t, Result_ MaxBoundedOp (IdxInfo t (Container cont)) ms) b, MaxBoundedQM ms ps f t cont) => a Source

maxBound :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX (t, Result_ MaxBoundedOp (IdxInfo t (Container cont)) ms) b, MaxBoundedQM ms ps Identity t cont) => c Source

class Ctx ms m cont => SingletonQM ms ps m el cont where Source

Methods

singletonQM :: Query ms ps -> el -> m (ElResult SingletonOp ms el (Container cont) cont) Source

class Ctx ms m cont => ExpandableQM ms ps m cont where Source

Methods

expandQM :: Query ms ps -> cont -> m (PrimResult ExpandableOp ms (Container cont) cont) Source

class Ctx ms m cont => AllocableQM ms ps m cont where Source

Methods

allocQM :: Query ms ps -> Int -> m (PrimResult AllocableOp ms (Container cont) cont) Source

class Ctx ms m cont => GrowableQM ms ps m cont where Source

Methods

growQM :: Query ms ps -> Int -> cont -> m (PrimResult GrowableOp ms (Container cont) cont) Source

type GrowableQ ms ps = GrowableQM ms ps Identity Source

singletonM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> m (Res (Result_ SingletonOp (ElInfo el (Container cont)) ms) cont)) a, SingletonQM ms ps m el cont) => a Source

singleton' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> Res (Result_ SingletonOp (ElInfo el (Container cont)) ms) cont) c, SingletonQM ms ps Identity el cont) => c Source

singletonM :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> f b) a, RTup2TupX (t, Result_ SingletonOp (ElInfo el (Container t)) ms) b, SingletonQM ms ps f el t) => a Source

singleton :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> b) c, RTup2TupX (t, Result_ SingletonOp (ElInfo el (Container t)) ms) b, SingletonQM ms ps Identity el t) => c Source

allocM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> m (Res (Result_ AllocableOp (PrimInfo (Container cont)) ms) cont)) a, AllocableQM ms ps m cont) => a Source

alloc' :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> Res (Result_ AllocableOp (PrimInfo (Container cont)) ms) cont) c, AllocableQM ms ps Identity cont) => c Source

allocM :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> f b) a, RTup2TupX (t, Result_ AllocableOp (PrimInfo (Container t)) ms) b, AllocableQM ms ps f t) => a Source

alloc :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> b) c, RTup2TupX (t, Result_ AllocableOp (PrimInfo (Container t)) ms) b, AllocableQM ms ps Identity t) => c Source

expandM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ ExpandableOp (PrimInfo (Container cont)) ms) cont)) a, ExpandableQM ms ps m cont) => a Source

expand' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ ExpandableOp (PrimInfo (Container cont)) ms) cont) c, ExpandableQM ms ps Identity cont) => c Source

expandM :: (FuncTrans ([] *) ([] *) (Query ms ps -> t -> f b) a, RTup2TupX (t, Result_ ExpandableOp (PrimInfo (Container t)) ms) b, ExpandableQM ms ps f t) => a Source

expand :: (FuncTrans ([] *) ([] *) (Query ms ps -> t -> b) c, RTup2TupX (t, Result_ ExpandableOp (PrimInfo (Container t)) ms) b, ExpandableQM ms ps Identity t) => c Source

growM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> cont -> m (Res (Result_ GrowableOp (PrimInfo (Container cont)) ms) cont)) a, GrowableQM ms ps m cont) => a Source

grow' :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> cont -> Res (Result_ GrowableOp (PrimInfo (Container cont)) ms) cont) c, GrowableQM ms ps Identity cont) => c Source

growM :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> t -> f b) a, RTup2TupX (t, Result_ GrowableOp (PrimInfo (Container t)) ms) b, GrowableQM ms ps f t) => a Source

grow :: (FuncTrans ([] *) ([] *) (Query ms ps -> Int -> t -> b) c, RTup2TupX (t, Result_ GrowableOp (PrimInfo (Container t)) ms) b, GrowableQM ms ps Identity t) => c Source

class Ctx ms m cont => AppendableQM ms ps m el cont where Source

Methods

appendQM :: Query ms ps -> el -> cont -> m (ElResult AppendableOp ms el (Container cont) cont) Source

class Ctx ms m cont => PrependableQM ms ps m el cont where Source

Methods

prependQM :: Query ms ps -> el -> cont -> m (ElResult PrependableOp ms el (Container cont) cont) Source

class Ctx ms m cont => AddableQM ms ps m el cont where Source

Methods

addQM :: Query ms ps -> el -> cont -> m (ElResult AddableOp ms el (Container cont) cont) Source

class Ctx ms m cont => RemovableQM ms ps m el cont where Source

Methods

removeQM :: Query ms ps -> el -> cont -> m (ElResult RemovableOp ms el (Container cont) cont) Source

class Ctx ms m cont => InsertableQM ms ps m idx el cont where Source

Methods

insertQM :: Query ms ps -> idx -> el -> cont -> m (IdxElResult InsertableOp ms idx el (Container cont) cont) Source

class Ctx ms m cont => FreeableQM ms ps m idx cont where Source

Methods

freeQM :: Query ms ps -> idx -> cont -> m (IdxResult FreeableOp ms idx (Container cont) cont) Source

class Ctx ms m cont => ReservableQM ms ps m cont where Source

Methods

reserveQM :: Query ms ps -> cont -> m (PrimResult ReservableOp ms (Container cont) cont) Source

type AddableQ ms ps = AddableQM ms ps Identity Source

data RemovableOp Source

Constructors

RemovableOp 

Instances

type FreeableQ ms ps = FreeableQM ms ps Identity Source

data ReservableOp Source

Constructors

ReservableOp 

Instances

type IdxMod ReservableOp a = a Source 
type ConstrainCls ReservableOp ms ps info m = ReservableQM_ ms ps m Source 
type ModsOf ReservableOp (Reusable idx a) = (:) * Ixed ([] *) Source 
type ParamsOf ReservableOp (Reusable idx a) = [] * Source 

appendM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> m (Res (Result_ AppendableOp (ElInfo el (Container cont)) ms) cont)) a, AppendableQM ms ps m el cont) => a Source

append' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> Res (Result_ AppendableOp (ElInfo el (Container cont)) ms) cont) c, AppendableQM ms ps Identity el cont) => c Source

appendM :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> f b) a, RTup2TupX (t, Result_ AppendableOp (ElInfo el (Container t)) ms) b, AppendableQM ms ps f el t) => a Source

append :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> b) c, RTup2TupX (t, Result_ AppendableOp (ElInfo el (Container t)) ms) b, AppendableQM ms ps Identity el t) => c Source

prependM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> m (Res (Result_ PrependableOp (ElInfo el (Container cont)) ms) cont)) a, PrependableQM ms ps m el cont) => a Source

prepend' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> Res (Result_ PrependableOp (ElInfo el (Container cont)) ms) cont) c, PrependableQM ms ps Identity el cont) => c Source

prependM :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> f b) a, RTup2TupX (t, Result_ PrependableOp (ElInfo el (Container t)) ms) b, PrependableQM ms ps f el t) => a Source

prepend :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> b) c, RTup2TupX (t, Result_ PrependableOp (ElInfo el (Container t)) ms) b, PrependableQM ms ps Identity el t) => c Source

addM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> m (Res (Result_ AddableOp (ElInfo el (Container cont)) ms) cont)) a, AddableQM ms ps m el cont) => a Source

add' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> Res (Result_ AddableOp (ElInfo el (Container cont)) ms) cont) c, AddableQM ms ps Identity el cont) => c Source

addM :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> f b) a, RTup2TupX (t, Result_ AddableOp (ElInfo el (Container t)) ms) b, AddableQM ms ps f el t) => a Source

add :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> b) c, RTup2TupX (t, Result_ AddableOp (ElInfo el (Container t)) ms) b, AddableQM ms ps Identity el t) => c Source

add_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> b -> b) c, AddableQM ms ps Identity el b) => c Source

removeM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> m (Res (Result_ RemovableOp (ElInfo el (Container cont)) ms) cont)) a, RemovableQM ms ps m el cont) => a Source

remove' :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> cont -> Res (Result_ RemovableOp (ElInfo el (Container cont)) ms) cont) c, RemovableQM ms ps Identity el cont) => c Source

removeM :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> f b) a, RTup2TupX (t, Result_ RemovableOp (ElInfo el (Container t)) ms) b, RemovableQM ms ps f el t) => a Source

remove :: (FuncTrans ([] *) ([] *) (Query ms ps -> el -> t -> b) c, RTup2TupX (t, Result_ RemovableOp (ElInfo el (Container t)) ms) b, RemovableQM ms ps Identity el t) => c Source

insertM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> el -> cont -> m (Res (Result_ InsertableOp (IdxElInfo idx el (Container cont)) ms) cont)) a, InsertableQM ms ps m idx el cont) => a Source

insert' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> el -> cont -> Res (Result_ InsertableOp (IdxElInfo idx el (Container cont)) ms) cont) c, InsertableQM ms ps Identity idx el cont) => c Source

insertM :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> el -> t -> f b) a, RTup2TupX (t, Result_ InsertableOp (IdxElInfo idx el (Container t)) ms) b, InsertableQM ms ps f idx el t) => a Source

insert :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> el -> t -> b) c, RTup2TupX (t, Result_ InsertableOp (IdxElInfo idx el (Container t)) ms) b, InsertableQM ms ps Identity idx el t) => c Source

insert_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> el -> b -> b) c, InsertableQM ms ps Identity idx el b) => c Source

freeM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> m (Res (Result_ FreeableOp (IdxInfo idx (Container cont)) ms) cont)) a, FreeableQM ms ps m idx cont) => a Source

free' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> Res (Result_ FreeableOp (IdxInfo idx (Container cont)) ms) cont) c, FreeableQM ms ps Identity idx cont) => c Source

freeM :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> t -> f b) a, RTup2TupX (t, Result_ FreeableOp (IdxInfo idx (Container t)) ms) b, FreeableQM ms ps f idx t) => a Source

free :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> t -> b) c, RTup2TupX (t, Result_ FreeableOp (IdxInfo idx (Container t)) ms) b, FreeableQM ms ps Identity idx t) => c Source

free_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> b -> b) c, FreeableQM ms ps Identity idx b) => c Source

reserveM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ ReservableOp (PrimInfo (Container cont)) ms) cont)) a, ReservableQM ms ps m cont) => a Source

reserve' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ ReservableOp (PrimInfo (Container cont)) ms) cont) c, ReservableQM ms ps Identity cont) => c Source

reserveM :: (FuncTrans ([] *) ([] *) (Query ms ps -> t -> f b) a, RTup2TupX (t, Result_ ReservableOp (PrimInfo (Container t)) ms) b, ReservableQM ms ps f t) => a Source

reserve :: (FuncTrans ([] *) ([] *) (Query ms ps -> t -> b) c, RTup2TupX (t, Result_ ReservableOp (PrimInfo (Container t)) ms) b, ReservableQM ms ps Identity t) => c Source

class Ctx ms m cont => IndexableQM ms ps m idx el cont where Source

Methods

indexQM :: Query ms ps -> idx -> cont -> m (IdxElResult IndexableOp ms idx el (Container cont) el) Source

class Ctx ms m cont => TracksFreeIxesQM ms ps m idx cont where Source

Methods

freeIxesQM :: Query ms ps -> cont -> m (IdxResult TracksFreeIxesOp ms idx (Container cont) [idx]) Source

class Ctx ms m cont => TracksUsedIxesQM ms ps m idx cont where Source

Methods

usedIxesQM :: Query ms ps -> cont -> m (IdxResult TracksUsedIxesOp ms idx (Container cont) [idx]) Source

class Ctx ms m cont => TracksIxesQM ms ps m idx cont where Source

Methods

ixesQM :: Query ms ps -> cont -> m (IdxResult TracksIxesOp ms idx (Container cont) [idx]) Source

class Ctx2 m => TracksElemsQM ms ps m el cont where Source

Methods

elemsQM :: Query ms ps -> cont -> m (ElResult TracksElemsOp ms el (Container cont) [el]) Source

indexM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> m (Res (Result_ IndexableOp (IdxElInfo idx el (Container cont)) ms) el)) a, IndexableQM ms ps m idx el cont) => a Source

index' :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> Res (Result_ IndexableOp (IdxElInfo idx el (Container cont)) ms) el) c, IndexableQM ms ps Identity idx el cont) => c Source

indexM :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> f b) a, RTup2TupX (t, Result_ IndexableOp (IdxElInfo idx t (Container cont)) ms) b, IndexableQM ms ps f idx t cont) => a Source

index :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> b) c, RTup2TupX (t, Result_ IndexableOp (IdxElInfo idx t (Container cont)) ms) b, IndexableQM ms ps Identity idx t cont) => c Source

index_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> idx -> cont -> b) c, IndexableQM ms ps Identity idx b cont) => c Source

freeIxesM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ TracksFreeIxesOp (IdxInfo idx (Container cont)) ms) [idx])) a, TracksFreeIxesQM ms ps m idx cont) => a Source

freeIxes' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ TracksFreeIxesOp (IdxInfo idx (Container cont)) ms) [idx]) c, TracksFreeIxesQM ms ps Identity idx cont) => c Source

freeIxesM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX ([idx], Result_ TracksFreeIxesOp (IdxInfo idx (Container cont)) ms) b, TracksFreeIxesQM ms ps f idx cont) => a Source

freeIxes :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX ([idx], Result_ TracksFreeIxesOp (IdxInfo idx (Container cont)) ms) b, TracksFreeIxesQM ms ps Identity idx cont) => c Source

usedIxesM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ TracksUsedIxesOp (IdxInfo idx (Container cont)) ms) [idx])) a, TracksUsedIxesQM ms ps m idx cont) => a Source

usedIxes' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ TracksUsedIxesOp (IdxInfo idx (Container cont)) ms) [idx]) c, TracksUsedIxesQM ms ps Identity idx cont) => c Source

usedIxesM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX ([idx], Result_ TracksUsedIxesOp (IdxInfo idx (Container cont)) ms) b, TracksUsedIxesQM ms ps f idx cont) => a Source

usedIxes :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX ([idx], Result_ TracksUsedIxesOp (IdxInfo idx (Container cont)) ms) b, TracksUsedIxesQM ms ps Identity idx cont) => c Source

usedIxes_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> [idx]) c, TracksUsedIxesQM ms ps Identity idx cont) => c Source

ixesM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ TracksIxesOp (IdxInfo idx (Container cont)) ms) [idx])) a, TracksIxesQM ms ps m idx cont) => a Source

ixes' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ TracksIxesOp (IdxInfo idx (Container cont)) ms) [idx]) c, TracksIxesQM ms ps Identity idx cont) => c Source

ixesM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX ([idx], Result_ TracksIxesOp (IdxInfo idx (Container cont)) ms) b, TracksIxesQM ms ps f idx cont) => a Source

ixes :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX ([idx], Result_ TracksIxesOp (IdxInfo idx (Container cont)) ms) b, TracksIxesQM ms ps Identity idx cont) => c Source

elemsM' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> m (Res (Result_ TracksElemsOp (ElInfo el (Container cont)) ms) [el])) a, TracksElemsQM ms ps m el cont) => a Source

elems' :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> Res (Result_ TracksElemsOp (ElInfo el (Container cont)) ms) [el]) c, TracksElemsQM ms ps Identity el cont) => c Source

elemsM :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> f b) a, RTup2TupX ([el], Result_ TracksElemsOp (ElInfo el (Container cont)) ms) b, TracksElemsQM ms ps f el cont) => a Source

elems :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> b) c, RTup2TupX ([el], Result_ TracksElemsOp (ElInfo el (Container cont)) ms) b, TracksElemsQM ms ps Identity el cont) => c Source

elems_ :: (FuncTrans ([] *) ([] *) (Query ms ps -> cont -> [el]) c, TracksElemsQM ms ps Identity el cont) => c Source

type family Tup2RTup t Source

Equations

Tup2RTup () = () 
Tup2RTup (t1, t2) = (t1, (t2, ())) 
Tup2RTup (t1, t2, t3) = (t1, (t2, (t3, ()))) 
Tup2RTup (t1, t2, t3, t4) = (t1, (t2, (t3, (t4, ())))) 
Tup2RTup a = (a, ()) 

type family AppendedRT a rt Source

Equations

AppendedRT a () = (a, ()) 
AppendedRT a (r, rt) = (r, AppendedRT a rt) 

type family InitRT rt Source

Equations

InitRT (t, ()) = () 
InitRT (t, ts) = (t, InitRT ts) 

class (rt ~ InitRT rt') => AppendRT a rt rt' | a rt -> rt', rt' -> a where Source

Methods

appendRT :: a -> rt -> rt' Source

Instances

AppendRT a () (a, ()) Source 
(AppendRT a rt rt', (~) * (InitRT (r, rt')) (r, rt)) => AppendRT a (r, rt) (r, rt') Source 

resToRTup :: Res t1 t -> (t, t1) Source

res_ :: Res t t1 -> t1 Source

formatResult :: RTup2TupX (t, t1) b => Res t1 t -> b Source

class (rt ~ Tup2RTup t) => RTup2TupX rt t | rt -> t where Source

Methods

rtup2tupX :: rt -> t Source

Instances

RTup2TupX () () Source 
((~) * (Tup2RTup t1) (t1, ()), (~) * t1 t1') => RTup2TupX (t1, ()) t1' Source 
((~) * t1 t1', (~) * t2 t2') => RTup2TupX (t1, (t2, ())) (t1', t2') Source 
((~) * t1 t1', (~) * t2 t2', (~) * t3 t3') => RTup2TupX (t1, (t2, (t3, ()))) (t1', t2', t3') Source 

type family PrettyCtx ms a :: Constraint Source

Equations

PrettyCtx `[]` a = Tup2RTup a ~ (a, ()) 
PrettyCtx ms a = () 

type Ctx ms m cont = (Monad m, PrettyCtx ms cont) Source

type Ctx2 m = Monad m Source

intercalate :: Monoid a => a -> [a] -> a Source