type-combinators-0.2.4.3: A collection of data types for type-level programming

CopyrightCopyright (C) 2015 Kyle Carter
LicenseBSD3
MaintainerKyle Carter <kylcarte@indiana.edu>
Stabilityexperimental
PortabilityRankNTypes
Safe HaskellNone
LanguageHaskell2010

Data.Type.Index

Description

A singleton-esque type for representing indices in a type-level list.

Documentation

data Index :: [k] -> k -> * where Source #

Constructors

IZ :: Index (a :< as) a 
IS :: !(Index as a) -> Index (b :< as) a 

Instances

Read2 l [l] (Index l) Source # 

Methods

readsPrec2 :: Int -> ReadS (Some2 (Index l) k f) Source #

IxTraversable1 k [k] (Index k) (Sum k) Source # 

Methods

itraverse1 :: Applicative h => (forall a. i b a -> f a -> h (g a)) -> t f b -> h (t g b) Source #

IxTraversable1 k [k] (Index k) (Prod k) Source # 

Methods

itraverse1 :: Applicative h => (forall a. i b a -> f a -> h (g a)) -> t f b -> h (t g b) Source #

IxFoldable1 k [k] (Index k) (Sum k) Source # 

Methods

ifoldMap1 :: Monoid m => (forall a. i b a -> f a -> m) -> t f b -> m Source #

IxFoldable1 k [k] (Index k) (Prod k) Source # 

Methods

ifoldMap1 :: Monoid m => (forall a. i b a -> f a -> m) -> t f b -> m Source #

IxFunctor1 k [k] (Index k) (Sum k) Source # 

Methods

imap1 :: (forall a. i b a -> f a -> g a) -> t f b -> t g b Source #

IxFunctor1 k [k] (Index k) (Prod k) Source # 

Methods

imap1 :: (forall a. i b a -> f a -> g a) -> t f b -> t g b Source #

TestEquality k (Index k as) Source # 

Methods

testEquality :: f a -> f b -> Maybe ((Index k as :~: a) b) #

Show1 k (Index k as) Source # 

Methods

showsPrec1 :: Int -> f a -> ShowS Source #

show1 :: f a -> String Source #

Ord1 k (Index k as) Source # 

Methods

compare1 :: f a -> f a -> Ordering Source #

(<#) :: f a -> f a -> Bool Source #

(>#) :: f a -> f a -> Bool Source #

(<=#) :: f a -> f a -> Bool Source #

(>=#) :: f a -> f a -> Bool Source #

Eq1 k (Index k as) Source # 

Methods

eq1 :: f a -> f a -> Bool Source #

neq1 :: f a -> f a -> Bool Source #

(∈) k a as => Known k (Index k as) a Source # 

Associated Types

type KnownC (Index k as) (a :: Index k as -> *) (a :: Index k as) :: Constraint Source #

Methods

known :: a a Source #

Witness ØC (Elem k as a) (Index k as a) Source # 

Associated Types

type WitnessC (ØC :: Constraint) (Elem k as a :: Constraint) (Index k as a) :: Constraint Source #

Methods

(\\) :: ØC => (Elem k as a -> r) -> Index k as a -> r Source #

Eq (Index k as a) Source # 

Methods

(==) :: Index k as a -> Index k as a -> Bool #

(/=) :: Index k as a -> Index k as a -> Bool #

Ord (Index k as a) Source # 

Methods

compare :: Index k as a -> Index k as a -> Ordering #

(<) :: Index k as a -> Index k as a -> Bool #

(<=) :: Index k as a -> Index k as a -> Bool #

(>) :: Index k as a -> Index k as a -> Bool #

(>=) :: Index k as a -> Index k as a -> Bool #

max :: Index k as a -> Index k as a -> Index k as a #

min :: Index k as a -> Index k as a -> Index k as a #

Show (Index k as a) Source # 

Methods

showsPrec :: Int -> Index k as a -> ShowS #

show :: Index k as a -> String #

showList :: [Index k as a] -> ShowS #

type KnownC k (Index k as) a Source # 
type KnownC k (Index k as) a = (∈) k a as
type WitnessC ØC (Elem k as a) (Index k as a) Source # 
type WitnessC ØC (Elem k as a) (Index k as a) = ØC

elimIndex :: (forall xs. p (a :< xs) a) -> (forall x xs. Index xs a -> p xs a -> p (x :< xs) a) -> Index as a -> p as a Source #

ixNil :: Index Ø a -> b Source #

onIxPred :: (Index as a -> Index bs a) -> Index (b :< as) a -> Index (b :< bs) a Source #

type (∈) a as = Elem as a infix 6 Source #

class Elem as a where Source #

Minimal complete definition

elemIndex

Methods

elemIndex :: Index as a Source #

Instances

Elem k as a => Elem k ((:<) k b as) a Source # 

Methods

elemIndex :: Index ((k :< b) as) a a Source #

Elem k ((:<) k a as) a Source # 

Methods

elemIndex :: Index ((k :< a) as) a a Source #

Witness ØC (Elem k as a) (Index k as a) Source # 

Associated Types

type WitnessC (ØC :: Constraint) (Elem k as a :: Constraint) (Index k as a) :: Constraint Source #

Methods

(\\) :: ØC => (Elem k as a -> r) -> Index k as a -> r Source #

type WitnessC ØC (Elem k as a) (Index k as a) Source # 
type WitnessC ØC (Elem k as a) (Index k as a) = ØC

class EveryC c as => Every c as where Source #

Minimal complete definition

every

Associated Types

type EveryC c as :: Constraint Source #

Methods

every :: Index as a -> Wit (c a) Source #

Instances

Every k c (Ø k) Source # 

Associated Types

type EveryC c (Ø k :: c -> Constraint) (as :: [c]) :: Constraint Source #

Methods

every :: Index c as a -> Wit (Ø k a) Source #

(c a1, Every a c as) => Every a c ((:<) a a1 as) Source # 

Associated Types

type EveryC c ((:<) a a1 as :: c -> Constraint) (as :: [c]) :: Constraint Source #

Methods

every :: Index c as a -> Wit ((a :< a1) as a) Source #

class ListC ((c <$> xs) <&> y) => Every2 c xs y where Source #

Minimal complete definition

every2

Methods

every2 :: Index xs x -> Wit (c x y) Source #

Instances

Every2 l k c (Ø k) y Source # 

Methods

every2 :: Index (Ø k) xs x -> Wit (y x y) Source #

(c x y, Every2 l a c xs y) => Every2 l a c ((:<) a x xs) y Source # 

Methods

every2 :: Index ((a :< x) xs) xs x -> Wit (y x y) Source #