hetero-parameter-list-0.1.0.19: hetero list with parameter list
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.HeteroParList

Synopsis

Hetero List

type L as = PL Id as Source #

pattern (:*) :: a -> L as -> L (a ': as) infixr 5 Source #

newtype Id a Source #

Constructors

Id a 

Instances

Instances details
Show a => Show (Id a) Source # 
Instance details

Defined in Data.HeteroParList

Methods

showsPrec :: Int -> Id a -> ShowS #

show :: Id a -> String #

showList :: [Id a] -> ShowS #

Default a => Default (Id a) Source # 
Instance details

Defined in Data.HeteroParList

Methods

def :: Id a #

Lengthed List

type LL a ds = PL (Dummy a) ds Source #

type LL' a n = PL (Dummy a) (Dummies n) Source #

pattern (:*.) :: a -> LL a ds -> LL a ('() ': ds) infixr 5 Source #

newtype Dummy a (d :: ()) Source #

Constructors

Dummy a 

Instances

Instances details
Show a => Show (Dummy a d) Source # 
Instance details

Defined in Data.HeteroParList

Methods

showsPrec :: Int -> Dummy a d -> ShowS #

show :: Dummy a d -> String #

showList :: [Dummy a d] -> ShowS #

Default a => Default (Dummy a d) Source # 
Instance details

Defined in Data.HeteroParList

Methods

def :: Dummy a d #

type family Dummies n where ... Source #

Equations

Dummies 0 = '[] 
Dummies n = '() ': Dummies (n - 1) 

type family ToDummies xs where ... Source #

Equations

ToDummies '[] = '[] 
ToDummies (x ': xs) = '() ': ToDummies xs 

Hetero Parameter List

data PL (t :: k -> Type) (ss :: [k]) where Source #

Constructors

Nil :: PL t '[] 
(:**) :: t s -> PL t ss -> PL t (s ': ss) infixr 5 

Instances

Instances details
(Show (t s), Show (PL t ss)) => Show (PL t (s ': ss)) Source # 
Instance details

Defined in Data.HeteroParList

Methods

showsPrec :: Int -> PL t (s ': ss) -> ShowS #

show :: PL t (s ': ss) -> String #

showList :: [PL t (s ': ss)] -> ShowS #

Show (PL t ('[] :: [k])) Source # 
Instance details

Defined in Data.HeteroParList

Methods

showsPrec :: Int -> PL t '[] -> ShowS #

show :: PL t '[] -> String #

showList :: [PL t '[]] -> ShowS #

(Default (t s), Default (PL t ss)) => Default (PL t (s ': ss)) Source # 
Instance details

Defined in Data.HeteroParList

Methods

def :: PL t (s ': ss) #

Default (PL t ('[] :: [k])) Source # 
Instance details

Defined in Data.HeteroParList

Methods

def :: PL t '[] #

(Eq (t s), Eq (PL t ss)) => Eq (PL t (s ': ss)) Source # 
Instance details

Defined in Data.HeteroParList

Methods

(==) :: PL t (s ': ss) -> PL t (s ': ss) -> Bool #

(/=) :: PL t (s ': ss) -> PL t (s ': ss) -> Bool #

Eq (PL t ('[] :: [k])) Source # 
Instance details

Defined in Data.HeteroParList

Methods

(==) :: PL t '[] -> PL t '[] -> Bool #

(/=) :: PL t '[] -> PL t '[] -> Bool #

type PL2 t = PL (PL t) Source #

type PL3 t = PL (PL2 t) Source #

type PL4 t = PL (PL3 t) Source #

pattern Singleton :: t s -> PL t '[s] Source #

pattern Singleton2 :: t s -> PL2 t '['[s]] Source #

pattern Singleton3 :: t s -> PL3 t '['['[s]]] Source #

pattern Singleton4 :: t s -> PL4 t '['['['[s]]]] Source #

From/To List

Hetero List

fromList

class FromList (ss :: [k]) where Source #

Methods

fromList :: (forall (s :: k). a -> t s) -> [a] -> PL t ss Source #

Instances

Instances details
FromList ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

fromList :: (forall (s :: k0). a -> t s) -> [a] -> PL t '[] Source #

FromList ss => FromList (s ': ss :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

fromList :: (forall (s0 :: k0). a -> t s0) -> [a] -> PL t (s ': ss) Source #

toList

toList :: (forall (s :: k). t s -> a) -> PL t ss -> [a] Source #

toList2 :: (forall (s :: k). t s -> a) -> PL2 t sss -> [[a]] Source #

toList3 :: (forall (s :: k). t s -> a) -> PL3 t ssss -> [[[a]]] Source #

toListM :: Applicative m => (forall (s :: k). t s -> m a) -> PL t ss -> m [a] Source #

toListM2 :: Applicative m => (forall (s :: k). t s -> m a) -> PL2 t sss -> m [[a]] Source #

toListM3 :: Applicative m => (forall (s :: k). t s -> m a) -> PL3 t sss -> m [[[a]]] Source #

toListM_ :: Applicative m => (forall (s :: k). t s -> m a) -> PL t ss -> m () Source #

toListM2_ :: Applicative m => (forall (s :: k). t s -> m a) -> PL2 t ss -> m () Source #

toListM3_ :: Applicative m => (forall (s :: k). t s -> m a) -> PL3 t ss -> m () Source #

class ToListT2 k1 k2 (ss :: [(k1, k2)]) where Source #

Methods

toListT2 :: (forall (s1 :: k1) (s2 :: k2). t '(s1, s2) -> a) -> PL t ss -> [a] Source #

Instances

Instances details
ToListT2 k1 k2 ('[] :: [(k1, k2)]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListT2 :: (forall (s1 :: k1) (s2 :: k2). t '(s1, s2) -> a) -> PL t '[] -> [a] Source #

ToListT2 k1 k2 ss => ToListT2 k1 k2 ('(s1, s2) ': ss :: [(k1, k2)]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListT2 :: (forall (s10 :: k1) (s20 :: k2). t '(s10, s20) -> a) -> PL t ('(s1, s2) ': ss) -> [a] Source #

class ToListT3 k1 k2 k3 (ss :: [(k1, k2, k3)]) where Source #

Methods

toListT3 :: (forall (s1 :: k1) (s2 :: k2) (s3 :: k3). t '(s1, s2, s3) -> a) -> PL t ss -> [a] Source #

Instances

Instances details
ToListT3 k1 k2 k3 ('[] :: [(k1, k2, k3)]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListT3 :: (forall (s1 :: k1) (s2 :: k2) (s3 :: k3). t '(s1, s2, s3) -> a) -> PL t '[] -> [a] Source #

ToListT3 k1 k2 k3 ss => ToListT3 k1 k2 k3 ('(s1, s2, s3) ': ss :: [(k1, k2, k3)]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListT3 :: (forall (s10 :: k1) (s20 :: k2) (s30 :: k3). t '(s10, s20, s30) -> a) -> PL t ('(s1, s2, s3) ': ss) -> [a] Source #

zipToList

zipToList :: (forall (s :: k) (s' :: k'). t s -> t' s' -> a) -> PL t ss -> PL t' ss' -> [a] Source #

zip3ToList :: (forall (s1 :: k1) (s2 :: k2) (s3 :: k3). t1 s1 -> t2 s2 -> t3 s3 -> a) -> PL t1 ss1 -> PL t2 ss2 -> PL t3 ss3 -> [a] Source #

zip4ToList :: (forall (s1 :: k1) (s2 :: k2) (s3 :: k3) (s4 :: k4). t1 s1 -> t2 s2 -> t3 s3 -> t4 s4 -> a) -> PL t1 ss1 -> PL t2 ss2 -> PL t3 ss3 -> PL t4 ss4 -> [a] Source #

with constraint

class ToListWithC c ss where Source #

Methods

toListWithC :: (forall s. c s => t s -> a) -> PL t ss -> [a] Source #

Instances

Instances details
ToListWithC (c :: k -> Constraint) ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithC :: (forall (s :: k0). c s => t s -> a) -> PL t '[] -> [a] Source #

(c s, ToListWithC c ss) => ToListWithC (c :: a -> Constraint) (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithC :: (forall (s0 :: k). c s0 => t s0 -> a0) -> PL t (s ': ss) -> [a0] Source #

class ToListWithC2 c sss where Source #

Methods

toListWithC2 :: (forall s. c s => t s -> a) -> PL2 t sss -> [[a]] Source #

Instances

Instances details
ToListWithC2 (c :: k -> Constraint) ('[] :: [[k]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithC2 :: (forall (s :: k0). c s => t s -> a) -> PL2 t '[] -> [[a]] Source #

(ToListWithC c ss, ToListWithC2 c sss) => ToListWithC2 (c :: k -> Constraint) (ss ': sss :: [[k]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithC2 :: (forall (s :: k0). c s => t s -> a) -> PL2 t (ss ': sss) -> [[a]] Source #

class ZipListWithC c ss where Source #

Methods

zipListWithC :: (forall s. c s => t s -> t' s -> a) -> PL t ss -> PL t' ss -> [a] Source #

Instances

Instances details
ZipListWithC (c :: k -> Constraint) ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC :: (forall (s :: k0). c s => t s -> t' s -> a) -> PL t '[] -> PL t' '[] -> [a] Source #

(c s, ZipListWithC c ss) => ZipListWithC (c :: a -> Constraint) (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC :: (forall (s0 :: k). c s0 => t s0 -> t' s0 -> a0) -> PL t (s ': ss) -> PL t' (s ': ss) -> [a0] Source #

class ZipListWithC2 c sss where Source #

Methods

zipListWithC2 :: (forall s. c s => t s -> t' s -> a) -> PL2 t sss -> PL2 t' sss -> [[a]] Source #

Instances

Instances details
ZipListWithC2 (c :: k -> Constraint) ('[] :: [[k]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC2 :: (forall (s :: k0). c s => t s -> t' s -> a) -> PL2 t '[] -> PL2 t' '[] -> [[a]] Source #

(ZipListWithC c ss, ZipListWithC2 c sss) => ZipListWithC2 (c :: k -> Constraint) (ss ': sss :: [[k]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC2 :: (forall (s :: k0). c s => t s -> t' s -> a) -> PL2 t (ss ': sss) -> PL2 t' (ss ': sss) -> [[a]] Source #

class ZipListWithC3 c ssss where Source #

Methods

zipListWithC3 :: (forall s. c s => t s -> t' s -> a) -> PL3 t ssss -> PL3 t' ssss -> [[[a]]] Source #

Instances

Instances details
ZipListWithC3 (c :: k -> Constraint) ('[] :: [[[k]]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC3 :: (forall (s :: k0). c s => t s -> t' s -> a) -> PL3 t '[] -> PL3 t' '[] -> [[[a]]] Source #

(ZipListWithC2 c sss, ZipListWithC3 c ssss) => ZipListWithC3 (c :: k -> Constraint) (sss ': ssss :: [[[k]]]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

zipListWithC3 :: (forall (s :: k0). c s => t s -> t' s -> a) -> PL3 t (sss ': ssss) -> PL3 t' (sss ': ssss) -> [[[a]]] Source #

class ToListWithCM c ss where Source #

Methods

toListWithCM :: Applicative m => (forall s. c s => t s -> m a) -> PL t ss -> m [a] Source #

Instances

Instances details
ToListWithCM (c :: k -> Constraint) ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCM :: Applicative m => (forall (s :: k0). c s => t s -> m a) -> PL t '[] -> m [a] Source #

(c s, ToListWithCM c ss) => ToListWithCM (c :: a -> Constraint) (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCM :: Applicative m => (forall (s0 :: k). c s0 => t s0 -> m a0) -> PL t (s ': ss) -> m [a0] Source #

class ToListWithCM' c (t' :: k -> k') (ss :: [k]) where Source #

Methods

toListWithCM' :: Applicative m => (forall (s :: k). c (t' s) => t s -> m a) -> PL t ss -> m [a] Source #

Instances

Instances details
ToListWithCM' (c :: k' -> Constraint) (t' :: k -> k') ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCM' :: Applicative m => (forall (s :: k0). c (t' s) => t s -> m a) -> PL t '[] -> m [a] Source #

(c (t' s), ToListWithCM' c t' ss) => ToListWithCM' (c :: k' -> Constraint) (t' :: a -> k') (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCM' :: Applicative m => (forall (s0 :: k). c (t' s0) => t s0 -> m a0) -> PL t (s ': ss) -> m [a0] Source #

class ToListWithCCpsM c ns where Source #

Methods

toListWithCCpsM :: (forall s. c s => t s -> (a -> m b) -> m b) -> PL t ns -> ([a] -> m b) -> m b Source #

Instances

Instances details
ToListWithCCpsM (c :: k -> Constraint) ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCCpsM :: forall {k1} t a m (b :: k1). (forall (s :: k0). c s => t s -> (a -> m b) -> m b) -> PL t '[] -> ([a] -> m b) -> m b Source #

(c n, ToListWithCCpsM c ns) => ToListWithCCpsM (c :: a -> Constraint) (n ': ns :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCCpsM :: forall {k1} t a0 m (b :: k1). (forall (s :: k). c s => t s -> (a0 -> m b) -> m b) -> PL t (n ': ns) -> ([a0] -> m b) -> m b Source #

class ToListWithCCpsM' c (t' :: k -> k') (ns :: [k]) where Source #

Methods

toListWithCCpsM' :: (forall (s :: k). c (t' s) => t s -> (a -> m b) -> m b) -> PL t ns -> ([a] -> m b) -> m b Source #

Instances

Instances details
ToListWithCCpsM' (c :: k' -> Constraint) (t' :: k -> k') ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCCpsM' :: forall {k1} t a m (b :: k1). (forall (s :: k0). c (t' s) => t s -> (a -> m b) -> m b) -> PL t '[] -> ([a] -> m b) -> m b Source #

(c (t' n), ToListWithCCpsM' c t' ns) => ToListWithCCpsM' (c :: k' -> Constraint) (t' :: a -> k') (n ': ns :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

toListWithCCpsM' :: forall {k1} t a0 m (b :: k1). (forall (s :: k). c (t' s) => t s -> (a0 -> m b) -> m b) -> PL t (n ': ns) -> ([a0] -> m b) -> m b Source #

withListWithCCpsM' :: forall k c t' ns t m a b. ToListWithCCpsM' c t' ns => PL t ns -> (forall (s :: k). c (t' s) => t s -> (a -> m b) -> m b) -> ([a] -> m b) -> m b Source #

Homo List

Homo List

class HomoList (s :: k) ss where Source #

Methods

homoListFromList :: [t s] -> PL t ss Source #

homoListToList :: PL t ss -> [t s] Source #

Instances

Instances details
HomoList (s :: k) ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

homoListFromList :: [t s] -> PL t '[] Source #

homoListToList :: PL t '[] -> [t s] Source #

HomoList s ss => HomoList (s :: a) (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

homoListFromList :: [t s] -> PL t (s ': ss) Source #

homoListToList :: PL t (s ': ss) -> [t s] Source #

Homo List With Num

class HomoListN (n :: Num k) where Source #

Associated Types

type Replicate n (s :: k') :: [k'] Source #

Methods

homoListNFromList :: [t s] -> PL t (Replicate n s) Source #

mapHomoListNM :: Monad m => (t a -> m (u b)) -> PL t (Replicate n a) -> m (PL u (Replicate n b)) Source #

mapHomoListNMWithI :: Monad m => Int -> (Int -> t a -> m (u b)) -> PL t (Replicate n a) -> m (PL u (Replicate n b)) Source #

zipWithHomoListNM :: Monad m => (t a -> u b -> m (v c)) -> PL t (Replicate n a) -> PL u (Replicate n b) -> m (PL v (Replicate n c)) Source #

zipWithHomoListNM_ :: Monad m => (t a -> u b -> m c) -> PL t (Replicate n a) -> PL u (Replicate n b) -> m () Source #

Instances

Instances details
HomoListN ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Associated Types

type Replicate '[] s :: [k'] Source #

Methods

homoListNFromList :: forall {k'} t (s :: k'). [t s] -> PL t (Replicate '[] s) Source #

mapHomoListNM :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2). Monad m => (t a -> m (u b)) -> PL t (Replicate '[] a) -> m (PL u (Replicate '[] b)) Source #

mapHomoListNMWithI :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2). Monad m => Int -> (Int -> t a -> m (u b)) -> PL t (Replicate '[] a) -> m (PL u (Replicate '[] b)) Source #

zipWithHomoListNM :: forall {k'1} {k'2} {k'3} m t (a :: k'1) u (b :: k'2) v (c :: k'3). Monad m => (t a -> u b -> m (v c)) -> PL t (Replicate '[] a) -> PL u (Replicate '[] b) -> m (PL v (Replicate '[] c)) Source #

zipWithHomoListNM_ :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2) c. Monad m => (t a -> u b -> m c) -> PL t (Replicate '[] a) -> PL u (Replicate '[] b) -> m () Source #

HomoListN ds => HomoListN (d ': ds :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Associated Types

type Replicate (d ': ds) s :: [k'] Source #

Methods

homoListNFromList :: forall {k'} t (s :: k'). [t s] -> PL t (Replicate (d ': ds) s) Source #

mapHomoListNM :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2). Monad m => (t a -> m (u b)) -> PL t (Replicate (d ': ds) a) -> m (PL u (Replicate (d ': ds) b)) Source #

mapHomoListNMWithI :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2). Monad m => Int -> (Int -> t a -> m (u b)) -> PL t (Replicate (d ': ds) a) -> m (PL u (Replicate (d ': ds) b)) Source #

zipWithHomoListNM :: forall {k'1} {k'2} {k'3} m t (a :: k'1) u (b :: k'2) v (c :: k'3). Monad m => (t a -> u b -> m (v c)) -> PL t (Replicate (d ': ds) a) -> PL u (Replicate (d ': ds) b) -> m (PL v (Replicate (d ': ds) c)) Source #

zipWithHomoListNM_ :: forall {k'1} {k'2} m t (a :: k'1) u (b :: k'2) c. Monad m => (t a -> u b -> m c) -> PL t (Replicate (d ': ds) a) -> PL u (Replicate (d ': ds) b) -> m () Source #

type Num a = [a] Source #

tnum :: [a] -> (forall (n :: Num ()). HomoListN n => Proxy n -> b) -> b Source #

Index

class TypeIndex (obj :: k) objs where Source #

Methods

typeIndex :: PL t objs -> t obj Source #

Instances

Instances details
TypeIndex (obj :: a) (obj ': objs :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

typeIndex :: PL t (obj ': objs) -> t obj Source #

TypeIndex obj objs => TypeIndex (obj :: a) (obj' ': objs :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

typeIndex :: PL t (obj' ': objs) -> t obj Source #

index :: Integral i => PL t ss -> i -> (forall s. t s -> a) -> a Source #

homoListIndex :: forall s {t} {ss} {i}. (HomoList s ss, Integral i) => PL t ss -> i -> t s Source #

Map and ReplicateM

map :: (forall s. t s -> t' s) -> PL t ss -> PL t' ss Source #

mapM :: Applicative m => (forall s. t s -> m (t' s)) -> PL t ss -> m (PL t' ss) Source #

mapM_ :: Applicative m => (forall s. t s -> m a) -> PL t ss -> m () Source #

class MapM' (f :: k -> k') ss where Source #

Associated Types

type Ss' f ss :: [k'] Source #

Methods

mapM' :: Applicative m => (forall s. t s -> m (t' (f s))) -> PL t ss -> m (PL t' (Ss' f ss)) Source #

Instances

Instances details
MapM' (f :: k -> k') ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Associated Types

type Ss' f '[] :: [k'] Source #

Methods

mapM' :: Applicative m => (forall (s :: k0). t s -> m (t' (f s))) -> PL t '[] -> m (PL t' (Ss' f '[])) Source #

MapM' f ss => MapM' (f :: a -> k') (s ': ss :: [a]) Source # 
Instance details

Defined in Data.HeteroParList

Associated Types

type Ss' f (s ': ss) :: [k'] Source #

Methods

mapM' :: Applicative m => (forall (s0 :: k). t s0 -> m (t' (f s0))) -> PL t (s ': ss) -> m (PL t' (Ss' f (s ': ss))) Source #

class Rep n where Source #

Methods

rep :: (forall a. (forall s. t s -> a) -> a) -> (forall ss. PL t ss -> b) -> b Source #

Instances

Instances details
Rep (n - 1) => Rep (n :: Natural) Source # 
Instance details

Defined in Data.HeteroParList

Methods

rep :: (forall a. (forall (s :: k1). t s -> a) -> a) -> (forall (ss :: [k1]). PL t ss -> b) -> b Source #

Rep 0 Source # 
Instance details

Defined in Data.HeteroParList

Methods

rep :: (forall a. (forall (s :: k1). t s -> a) -> a) -> (forall (ss :: [k1]). PL t ss -> b) -> b Source #

class RepM n where Source #

Methods

repM :: (forall a. (forall s. t s -> m a) -> m a) -> (forall ss. PL t ss -> m b) -> m b Source #

Instances

Instances details
RepM (n - 1) => RepM (n :: Natural) Source # 
Instance details

Defined in Data.HeteroParList

Methods

repM :: forall {k1} {k2} t m (b :: k2). (forall (a :: k2). (forall (s :: k1). t s -> m a) -> m a) -> (forall (ss :: [k1]). PL t ss -> m b) -> m b Source #

RepM 0 Source # 
Instance details

Defined in Data.HeteroParList

Methods

repM :: forall {k1} {k2} t m (b :: k2). (forall (a :: k2). (forall (s :: k1). t s -> m a) -> m a) -> (forall (ss :: [k1]). PL t ss -> m b) -> m b Source #

RepM ('[] :: [k]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

repM :: forall {k1} {k2} t m (b :: k2). (forall (a :: k2). (forall (s :: k1). t s -> m a) -> m a) -> (forall (ss :: [k1]). PL t ss -> m b) -> m b Source #

RepM n => RepM ('() ': n :: [()]) Source # 
Instance details

Defined in Data.HeteroParList

Methods

repM :: forall {k1} {k2} t m (b :: k2). (forall (a :: k2). (forall (s :: k1). t s -> m a) -> m a) -> (forall (ss :: [k1]). PL t ss -> m b) -> m b Source #

replicate :: Int -> (forall a. (forall s. t s -> a) -> a) -> (forall ss. PL t ss -> b) -> b Source #

replicateM :: Int -> (forall a. (forall s. t s -> m a) -> m a) -> (forall ss. PL t ss -> m b) -> m b Source #

replicateMWithI :: Int -> (forall a. Int -> (forall s. t s -> m a) -> m a) -> (forall ss. PL t ss -> m b) -> m b Source #