Numeric.Dimensions.List

Basic operations

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ...

type a :+ as

type ns +: n

type Empty

type Cons n ns

type Snoc ns n

type family Head (xs :: [k]) :: k where ...

type family Tail (xs :: [k]) :: [k] where ...

type family Init (xs :: [k]) :: [k] where ...

type family Last (xs :: [k]) :: k where ...

type Concat as bs

type Reverse xs

type family Take (n :: Nat) (xs :: [k]) :: [k] where ...

type family Drop (n :: Nat) (xs :: [k]) :: [k] where ...

Working with concatenations

type family Suffix (as :: [k]) (asbs :: [k]) :: [k] where ...

type family Prefix (bs :: [k]) (asbs :: [k]) :: [k] where ...

type family IsPrefix (as :: [k]) (asbs :: [k]) :: Bool where ...

type family IsSuffix (as :: [k]) (asbs :: [k]) :: Bool where ...

Term level functions

class ConcatList as bs asbs

class FiniteList xs

data TypeList xs

Term level inference of type-level functions

inferConcat

inferSuffix

inferPrefix

type ConcatEvidence as bs asbs

type FiniteListEvidence xs

inferKnownLength

inferTailFiniteList

inferConcatFiniteList

inferPrefixFiniteList

inferSuffixFiniteList

inferSnocFiniteList

inferInitFiniteList

inferTakeNFiniteList

inferDropNFiniteList

inferReverseFiniteList