Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides proxy utilities for Data.Container.Class. | The proxy classes allow for nice options-dependent instance implementations, | hiding at the same time the complexity needed for type-level constrains resolution.
Documentation
type family ConstrainCls op ms ps info m :: * -> Constraint Source
type OpAxioms op info ms t = (ResultAxioms op info ms t, Functor (PrimResult op (GetOpts ms) t)) Source
type ResultAxioms op info ms t = Result_ op (info t) (GetOpts ms) ~ Result_ op (info (DataStore t)) (GetOpts ms) Source
runOp :: (Monad m, GetQueryData (GetOpts (MatchOpts (ModsOf cls cont) ms)) ms datas) => Proxy * cls -> Proxy * cont -> (OptQuery (MatchOpts (ModsOf cls cont) ms) (MatchOpts (ParamsOf cls cont) ps) -> a -> m (Res datas t)) -> (t1 -> m a) -> (t -> t1 -> m a1) -> Query ms ps -> t1 -> m (Res (QueryData * (GetOpts (MatchOpts (ModsOf cls cont) ms)) ms datas) a1) Source
class Monad m => MeasurableQM_ ms ps m cont where Source
sizeM_ :: OpAxioms MeasurableOp PrimInfo ms cont => OptQuery ms ps -> cont -> m (PrimResult MeasurableOp (GetOpts ms) cont Int) Source
MeasurableQM (GetOpts ms) (GetOpts ps) m a => MeasurableQM_ ms ps m (Resizable s a) Source | |
MeasurableQM (GetOpts ms) (GetOpts ps) m a => MeasurableQM_ ms ps m (Reusable idx a) Source | |
MeasurableQM (GetOpts ms) (GetOpts ps) m a => MeasurableQM_ ms ps m (Weak f a) Source |
class Monad m => MinBoundedQM_ ms ps m idx cont where Source
minBoundM_ :: OpAxioms MinBoundedOp (IdxInfo idx) ms cont => OptQuery ms ps -> cont -> m (IdxResult MinBoundedOp (GetOpts ms) idx cont idx) Source
MinBoundedQM (GetOpts ms) (GetOpts ps) m idx a => MinBoundedQM_ ms ps m idx (Resizable s a) Source | |
(MinBoundedQM (GetOpts ms) (GetOpts ps) m idx a, (~) * idx idx') => MinBoundedQM_ ms ps m idx (Reusable idx' a) Source | |
MinBoundedQM (GetOpts ms) (GetOpts ps) m idx a => MinBoundedQM_ ms ps m idx (Weak f a) Source |
class Monad m => MaxBoundedQM_ ms ps m idx cont where Source
maxBoundM_ :: OpAxioms MaxBoundedOp (IdxInfo idx) ms cont => OptQuery ms ps -> cont -> m (IdxResult MaxBoundedOp (GetOpts ms) idx cont idx) Source
MaxBoundedQM (GetOpts ms) (GetOpts ps) m idx a => MaxBoundedQM_ ms ps m idx (Resizable s a) Source | |
(MaxBoundedQM (GetOpts ms) (GetOpts ps) m idx a, (~) * idx idx') => MaxBoundedQM_ ms ps m idx (Reusable idx' a) Source | |
MaxBoundedQM (GetOpts ms) (GetOpts ps) m idx a => MaxBoundedQM_ ms ps m idx (Weak f a) Source |
class Monad m => SingletonQM_ ms ps m el cont where Source
singletonM_ :: OpAxioms SingletonOp (ElInfo el) ms cont => OptQuery ms ps -> el -> m (ElResult SingletonOp (GetOpts ms) el cont cont) Source
(SingletonQM (GetOpts ms) (GetOpts ps) m el a, Default s) => SingletonQM_ ms ps m el (Resizable s a) Source | |
(SingletonQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m el a, (~) * idx (Index (Container a))) => SingletonQM_ ms ps m el (Reusable idx a) Source | |
(MonadIO m, SingletonQM (GetOpts ms) (GetOpts ps) m (Weak el) a, (~) * (Result_ SingletonOp (ElInfo (Weak el) (Container a)) (GetOpts ms)) (Result_ SingletonOp (ElInfo el (Weak f a)) (GetOpts ms))) => SingletonQM_ ms ps m el (Weak f a) Source |
class Monad m => AllocableQM_ ms ps m cont where Source
allocM_ :: OpAxioms AllocableOp PrimInfo ms cont => OptQuery ms ps -> Int -> m (PrimResult AllocableOp (GetOpts ms) cont cont) Source
(AllocableQM (GetOpts ms) (GetOpts ps) m a, Default s) => AllocableQM_ ms ps m (Resizable s a) Source | |
(AllocableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m a, (~) * idx (Index (Container a))) => AllocableQM_ ms ps m (Reusable idx a) Source | |
AllocableQM (GetOpts ms) (GetOpts ps) m a => AllocableQM_ ms ps m (Weak f a) Source |
class Monad m => ExpandableQM_ ms ps m cont where Source
expandM_ :: OpAxioms ExpandableOp PrimInfo ms cont => OptQuery ms ps -> cont -> m (PrimResult ExpandableOp (GetOpts ms) cont cont) Source
(GrowableQM (GetOpts ms) (GetOpts ps) m a, ResizeStep s a, (~) * (Result_ GrowableOp (PrimInfo (Container a)) (GetOpts ms)) (Result_ ExpandableOp (PrimInfo (Resizable s a)) (GetOpts ms))) => ExpandableQM_ ms ps m (Resizable s a) Source | |
(ExpandableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m a, (~) * idx (Index (Container a))) => ExpandableQM_ ms ps m (Reusable idx a) Source | |
ExpandableQM (GetOpts ms) (GetOpts ps) m a => ExpandableQM_ ms ps m (Weak f a) Source |
class Monad m => GrowableQM_ ms ps m cont where Source
growM_ :: OpAxioms GrowableOp PrimInfo ms cont => OptQuery ms ps -> Int -> cont -> m (PrimResult GrowableOp (GetOpts ms) cont cont) Source
(GrowableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m a, (~) * idx (Index (Container a))) => GrowableQM_ ms ps m (Reusable idx a) Source | |
GrowableQM (GetOpts ms) (GetOpts ps) m a => GrowableQM_ ms ps m (Weak f a) Source |
class Monad m => AppendableQM_ ms ps m el cont where Source
appendM_ :: OpAxioms AppendableOp (ElInfo el) ms cont => OptQuery ms ps -> el -> cont -> m (ElResult AppendableOp (GetOpts ms) el cont cont) Source
AppendableQM (GetOpts ms) (GetOpts ps) m el a => AppendableQM_ ms ps m el (Resizable s a) Source | |
AppendableQM (GetOpts ms) (GetOpts ps) m el a => AppendableQM_ ms ps m el (Reusable idx a) Source | |
(AppendableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m (Weak el) a, (~) * (Result_ AppendableOp (ElInfo (Weak el) (Container a)) (GetOpts ms)) (Result_ AppendableOp (ElInfo el (Weak (IdxFinalizer idx) a)) (GetOpts ms)), (~) * idx (Index (Container a)), MonadIO m, MonadFix m) => AppendableQM_ ms ps m el (Weak (IdxFinalizer idx) a) Source |
class Monad m => PrependableQM_ ms ps m el cont where Source
prependM_ :: OpAxioms PrependableOp (ElInfo el) ms cont => OptQuery ms ps -> el -> cont -> m (ElResult PrependableOp (GetOpts ms) el cont cont) Source
PrependableQM (GetOpts ms) (GetOpts ps) m el a => PrependableQM_ ms ps m el (Resizable s a) Source | |
PrependableQM (GetOpts ms) (GetOpts ps) m el a => PrependableQM_ ms ps m el (Reusable idx a) Source | |
(PrependableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m (Weak el) a, (~) * (Result_ PrependableOp (ElInfo (Weak el) (Container a)) (GetOpts ms)) (Result_ PrependableOp (ElInfo el (Weak (IdxFinalizer idx) a)) (GetOpts ms)), (~) * idx (Index (Container a)), MonadIO m, MonadFix m) => PrependableQM_ ms ps m el (Weak (IdxFinalizer idx) a) Source |
class Monad m => AddableQM_ ms ps m el cont where Source
addM_ :: OpAxioms AddableOp (ElInfo el) ms cont => OptQuery ms ps -> el -> cont -> m (ElResult AddableOp (GetOpts ms) el cont cont) Source
AddableQM (GetOpts ms) (GetOpts ps) m el a => AddableQM_ ms ps m el (Resizable s a) Source | |
(InsertableQM (GetOpts ms) (GetOpts ps) m idx el a, ExpandableM m (Reusable idx a), (~) * (Result_ InsertableOp (IdxElInfo idx el (Container a)) (GetOpts ms)) (Result_ AddableOp (ElInfo el (Reusable idx a)) (GetOpts ms))) => AddableQM_ ms ps m el (Reusable idx a) Source | |
(AddableQM ((:) * Ixed (GetOpts ms)) (GetOpts ps) m (Weak el) a, (~) * (Result_ AddableOp (ElInfo (Weak el) (Container a)) (GetOpts ms)) (Result_ AddableOp (ElInfo el (Weak (IdxFinalizer idx) a)) (GetOpts ms)), (~) * idx (Index (Container a)), MonadIO m, MonadFix m) => AddableQM_ ms ps m el (Weak (IdxFinalizer idx) a) Source |
class Monad m => RemovableQM_ ms ps m el cont where Source
removeM_ :: OpAxioms RemovableOp (ElInfo el) ms cont => OptQuery ms ps -> el -> cont -> m (ElResult RemovableOp (GetOpts ms) el cont cont) Source
RemovableQM (GetOpts ms) (GetOpts ps) m el a => RemovableQM_ ms ps m el (Resizable s a) Source |
class Monad m => InsertableQM_ ms ps m idx el cont where Source
insertM_ :: OpAxioms InsertableOp (IdxElInfo idx el) ms cont => OptQuery ms ps -> idx -> el -> cont -> m (IdxElResult InsertableOp (GetOpts ms) idx el cont cont) Source
InsertableQM (GetOpts ms) (GetOpts ps) m idx el a => InsertableQM_ ms ps m idx el (Resizable s a) Source | |
(InsertableQM (GetOpts ms) (GetOpts ps) m idx el a, (~) * idx idx') => InsertableQM_ ms ((:) (Opt *) (P * Unchecked) ((:) (Opt *) (P * Inplace) ps)) m idx el (Reusable idx' a) Source |
class Monad m => FreeableQM_ ms ps m idx cont where Source
freeM_ :: OpAxioms FreeableOp (IdxInfo idx) ms cont => OptQuery ms ps -> idx -> cont -> m (IdxResult FreeableOp (GetOpts ms) idx cont cont) Source
FreeableQM (GetOpts ms) (GetOpts ps) m idx a => FreeableQM_ ms ps m idx (Resizable s a) Source | |
(FreeableQM (GetOpts ms) (GetOpts ps) m idx a, (~) * idx idx') => FreeableQM_ ms ps m idx (Reusable idx' a) Source | |
(FreeableQM (GetOpts ms) (GetOpts ps) m idx a, (~) * idx idx') => FreeableQM_ ms ps m idx (Weak (IdxFinalizer idx) a) Source |
class Monad m => ReservableQM_ ms ps m cont where Source
reserveM_ :: OpAxioms ReservableOp PrimInfo ms cont => OptQuery ms ps -> cont -> m (PrimResult ReservableOp (GetOpts ms) cont cont) Source
class Monad m => IndexableQM_ ms ps m idx el cont where Source
indexM_ :: OpAxioms IndexableOp (IdxElInfo idx el) ms cont => OptQuery ms ps -> idx -> cont -> m (IdxElResult IndexableOp (GetOpts ms) idx el cont el) Source
IndexableQM (GetOpts ms) (GetOpts ps) m idx el a => IndexableQM_ ms ps m idx el (Resizable s a) Source | |
(IndexableQM (GetOpts ms) (GetOpts ps) m idx el a, (~) * idx idx') => IndexableQM_ ms ps m idx el (Reusable idx' a) Source |
class Monad m => TracksFreeIxesQM_ ms ps m idx cont where Source
freeIxesM_ :: OpAxioms TracksFreeIxesOp (IdxInfo idx) ms cont => OptQuery ms ps -> cont -> m (IdxResult TracksFreeIxesOp (GetOpts ms) idx cont [idx]) Source
TracksFreeIxesQM (GetOpts ms) (GetOpts ps) m idx a => TracksFreeIxesQM_ ms ps m idx (Resizable s a) Source | |
(Monad m, (~) * idx idx') => TracksFreeIxesQM_ ([] (Opt *)) ps m idx (Reusable idx' a) Source |
class Monad m => TracksUsedIxesQM_ ms ps m idx cont where Source
usedIxesM_ :: OpAxioms TracksUsedIxesOp (IdxInfo idx) ms cont => OptQuery ms ps -> cont -> m (IdxResult TracksUsedIxesOp (GetOpts ms) idx cont [idx]) Source
TracksUsedIxesQM (GetOpts ms) (GetOpts ps) m idx a => TracksUsedIxesQM_ ms ps m idx (Resizable s a) Source | |
(TracksIxes idx (Reusable idx a), TracksFreeIxes idx (Reusable idx a), (~) * idx idx', Monad m, Eq idx) => TracksUsedIxesQM_ ([] (Opt *)) ps m idx (Reusable idx' a) Source |
class Monad m => TracksIxesQM_ ms ps m idx cont where Source
ixesM_ :: OpAxioms TracksIxesOp (IdxInfo idx) ms cont => OptQuery ms ps -> cont -> m (IdxResult TracksIxesOp (GetOpts ms) idx cont [idx]) Source
TracksIxesQM (GetOpts ms) (GetOpts ps) m idx a => TracksIxesQM_ ms ps m idx (Resizable s a) Source | |
(TracksIxesQM (GetOpts ms) (GetOpts ps) m idx a, (~) * idx idx') => TracksIxesQM_ ms ps m idx (Reusable idx' a) Source |
class Monad m => TracksElemsQM_ ms ps m el cont where Source
elemsM_ :: OpAxioms TracksElemsOp (ElInfo el) ms cont => OptQuery ms ps -> cont -> m (ElResult TracksElemsOp (GetOpts ms) el cont [el]) Source
TracksElemsQM (GetOpts ms) (GetOpts ps) m el a => TracksElemsQM_ ms ps m el (Resizable s a) Source | |
(TracksUsedIxes idx (Reusable idx a), Indexable idx el (Reusable idx a), Monad m) => TracksElemsQM_ ([] (Opt *)) ps m el (Reusable idx a) Source |