Data.Promotion.Prelude.List

Basic functions

type family (a :: [a]) :++ (a :: [a]) :: [a] where ...

type family Head (a :: [a]) :: a where ...

type family Last (a :: [a]) :: a where ...

type family Tail (a :: [a]) :: [a] where ...

type family Init (a :: [a]) :: [a] where ...

type family Null (a :: [a]) :: Bool where ...

type family Length (a :: [a]) :: Nat where ...

List transformations

type family Map (a :: TyFun a b -> Type) (a :: [a]) :: [b] where ...

type family Reverse (a :: [a]) :: [a] where ...

type family Intersperse (a :: a) (a :: [a]) :: [a] where ...

type family Intercalate (a :: [a]) (a :: [[a]]) :: [a] where ...

type family Transpose (a :: [[a]]) :: [[a]] where ...

type family Subsequences (a :: [a]) :: [[a]] where ...

type family Permutations (a :: [a]) :: [[a]] where ...

Reducing lists (folds)

type family Foldl (a :: TyFun b (TyFun a b -> Type) -> Type) (a :: b) (a :: [a]) :: b where ...

type family Foldl' (a :: TyFun b (TyFun a b -> Type) -> Type) (a :: b) (a :: [a]) :: b where ...

type family Foldl1 (a :: TyFun a (TyFun a a -> Type) -> Type) (a :: [a]) :: a where ...

type family Foldl1' (a :: TyFun a (TyFun a a -> Type) -> Type) (a :: [a]) :: a where ...

type family Foldr (a :: TyFun a (TyFun b b -> Type) -> Type) (a :: b) (a :: [a]) :: b where ...

type family Foldr1 (a :: TyFun a (TyFun a a -> Type) -> Type) (a :: [a]) :: a where ...

Special folds

type family Concat (a :: [[a]]) :: [a] where ...

type family ConcatMap (a :: TyFun a [b] -> Type) (a :: [a]) :: [b] where ...

type family And (a :: [Bool]) :: Bool where ...

type family Or (a :: [Bool]) :: Bool where ...

type family Any_ (a :: TyFun a Bool -> Type) (a :: [a]) :: Bool where ...

type family All (a :: TyFun a Bool -> Type) (a :: [a]) :: Bool where ...

type family Sum (a :: [a]) :: a where ...

type family Product (a :: [a]) :: a where ...

type family Maximum (a :: [a]) :: a where ...

type family Minimum (a :: [a]) :: a where ...

any_

Building lists

Scans

type family Scanl (a :: TyFun b (TyFun a b -> Type) -> Type) (a :: b) (a :: [a]) :: [b] where ...

type family Scanl1 (a :: TyFun a (TyFun a a -> Type) -> Type) (a :: [a]) :: [a] where ...

type family Scanr (a :: TyFun a (TyFun b b -> Type) -> Type) (a :: b) (a :: [a]) :: [b] where ...

type family Scanr1 (a :: TyFun a (TyFun a a -> Type) -> Type) (a :: [a]) :: [a] where ...

Accumulating maps

type family MapAccumL (a :: TyFun acc (TyFun x (acc, y) -> Type) -> Type) (a :: acc) (a :: [x]) :: (acc, [y]) where ...

type family MapAccumR (a :: TyFun acc (TyFun x (acc, y) -> Type) -> Type) (a :: acc) (a :: [x]) :: (acc, [y]) where ...

Infinite lists

type family Replicate (a :: Nat) (a :: a) :: [a] where ...

Unfolding

type family Unfoldr (a :: TyFun b (Maybe (a, b)) -> Type) (a :: b) :: [a] where ...

Sublists

Extracting sublists

type family Take (a :: Nat) (a :: [a]) :: [a] where ...

type family Drop (a :: Nat) (a :: [a]) :: [a] where ...

type family SplitAt (a :: Nat) (a :: [a]) :: ([a], [a]) where ...

type family TakeWhile (a :: TyFun a Bool -> Type) (a :: [a]) :: [a] where ...

type family DropWhile (a :: TyFun a Bool -> Type) (a :: [a]) :: [a] where ...

type family DropWhileEnd (a :: TyFun a Bool -> Type) (a :: [a]) :: [a] where ...

type family Span (a :: TyFun a Bool -> Type) (a :: [a]) :: ([a], [a]) where ...

type family Break (a :: TyFun a Bool -> Type) (a :: [a]) :: ([a], [a]) where ...

type family StripPrefix (a :: [a]) (a :: [a]) :: Maybe [a] where ...

type family Group (a :: [a]) :: [[a]] where ...

type family Inits (a :: [a]) :: [[a]] where ...

type family Tails (a :: [a]) :: [[a]] where ...

Predicates

type family IsPrefixOf (a :: [a]) (a :: [a]) :: Bool where ...

type family IsSuffixOf (a :: [a]) (a :: [a]) :: Bool where ...

type family IsInfixOf (a :: [a]) (a :: [a]) :: Bool where ...

Searching lists

Searching by equality

type family Elem (a :: a) (a :: [a]) :: Bool where ...

type family NotElem (a :: a) (a :: [a]) :: Bool where ...

type family Lookup (a :: a) (a :: [(a, b)]) :: Maybe b where ...

Searching with a predicate

type family Find (a :: TyFun a Bool -> Type) (a :: [a]) :: Maybe a where ...

type family Filter (a :: TyFun a Bool -> Type) (a :: [a]) :: [a] where ...

type family Partition (a :: TyFun a Bool -> Type) (a :: [a]) :: ([a], [a]) where ...

Indexing lists

type family (a :: [a]) :!! (a :: Nat) :: a where ...

type family ElemIndex (a :: a) (a :: [a]) :: Maybe Nat where ...

type family ElemIndices (a :: a) (a :: [a]) :: [Nat] where ...

type family FindIndex (a :: TyFun a Bool -> Type) (a :: [a]) :: Maybe Nat where ...

type family FindIndices (a :: TyFun a Bool -> Type) (a :: [a]) :: [Nat] where ...

Zipping and unzipping lists

type family Zip (a :: [a]) (a :: [b]) :: [(a, b)] where ...

type family Zip3 (a :: [a]) (a :: [b]) (a :: [c]) :: [(a, b, c)] where ...

type family Zip4 (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) :: [(a, b, c, d)] where ...

type family Zip5 (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) :: [(a, b, c, d, e)] where ...

type family Zip6 (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) (a :: [f]) :: [(a, b, c, d, e, f)] where ...

type family Zip7 (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) (a :: [f]) (a :: [g]) :: [(a, b, c, d, e, f, g)] where ...

type family ZipWith (a :: TyFun a (TyFun b c -> Type) -> Type) (a :: [a]) (a :: [b]) :: [c] where ...

type family ZipWith3 (a :: TyFun a (TyFun b (TyFun c d -> Type) -> Type) -> Type) (a :: [a]) (a :: [b]) (a :: [c]) :: [d] where ...

type family ZipWith4 (a :: TyFun a (TyFun b (TyFun c (TyFun d e -> Type) -> Type) -> Type) -> Type) (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) :: [e] where ...

type family ZipWith5 (a :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e f -> Type) -> Type) -> Type) -> Type) -> Type) (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) :: [f] where ...

type family ZipWith6 (a :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f g -> Type) -> Type) -> Type) -> Type) -> Type) -> Type) (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) (a :: [f]) :: [g] where ...

type family ZipWith7 (a :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g h -> Type) -> Type) -> Type) -> Type) -> Type) -> Type) -> Type) (a :: [a]) (a :: [b]) (a :: [c]) (a :: [d]) (a :: [e]) (a :: [f]) (a :: [g]) :: [h] where ...

type family Unzip (a :: [(a, b)]) :: ([a], [b]) where ...

type family Unzip3 (a :: [(a, b, c)]) :: ([a], [b], [c]) where ...

type family Unzip4 (a :: [(a, b, c, d)]) :: ([a], [b], [c], [d]) where ...

type family Unzip5 (a :: [(a, b, c, d, e)]) :: ([a], [b], [c], [d], [e]) where ...

type family Unzip6 (a :: [(a, b, c, d, e, f)]) :: ([a], [b], [c], [d], [e], [f]) where ...

type family Unzip7 (a :: [(a, b, c, d, e, f, g)]) :: ([a], [b], [c], [d], [e], [f], [g]) where ...

Special lists

"Set" operations

type family Nub (a :: [a]) :: [a] where ...

type family Delete (a :: a) (a :: [a]) :: [a] where ...

type family (a :: [a]) :\\ (a :: [a]) :: [a] where ...

type family Union (a :: [a]) (a :: [a]) :: [a] where ...

type family Intersect (a :: [a]) (a :: [a]) :: [a] where ...

Ordered lists

type family Sort (a :: [a]) :: [a] where ...

type family Insert (a :: a) (a :: [a]) :: [a] where ...

Generalized functions

The "By" operations

User-supplied equality (replacing an Eq context)

type family NubBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: [a]) :: [a] where ...

type family DeleteBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: a) (a :: [a]) :: [a] where ...

type family DeleteFirstsBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: [a]) (a :: [a]) :: [a] where ...

type family UnionBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: [a]) (a :: [a]) :: [a] where ...

type family GroupBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: [a]) :: [[a]] where ...

type family IntersectBy (a :: TyFun a (TyFun a Bool -> Type) -> Type) (a :: [a]) (a :: [a]) :: [a] where ...

User-supplied comparison (replacing an Ord context)

type family SortBy (a :: TyFun a (TyFun a Ordering -> Type) -> Type) (a :: [a]) :: [a] where ...

type family InsertBy (a :: TyFun a (TyFun a Ordering -> Type) -> Type) (a :: a) (a :: [a]) :: [a] where ...

type family MaximumBy (a :: TyFun a (TyFun a Ordering -> Type) -> Type) (a :: [a]) :: a where ...

type family MinimumBy (a :: TyFun a (TyFun a Ordering -> Type) -> Type) (a :: [a]) :: a where ...

The "generic" operations

type family GenericLength (a :: [a]) :: i where ...

type family GenericTake (a :: i) (a :: [a]) :: [a] where ...

type family GenericDrop (a :: i) (a :: [a]) :: [a] where ...

type family GenericSplitAt (a :: i) (a :: [a]) :: ([a], [a]) where ...

type family GenericIndex (a :: [a]) (a :: i) :: a where ...

type family GenericReplicate (a :: i) (a :: a) :: [a] where ...

Defunctionalization symbols

type NilSym0

data (:$) l

data l :$$ l

type t :$$$ t

type t :++$$$ t

data l :++$$ l

data (:++$) l

data HeadSym0 l

type HeadSym1 t

data LastSym0 l

type LastSym1 t

data TailSym0 l

type TailSym1 t

data InitSym0 l

type InitSym1 t

data NullSym0 l

type NullSym1 t

data MapSym0 l

data MapSym1 l l

type MapSym2 t t

data ReverseSym0 l

type ReverseSym1 t

data IntersperseSym0 l

data IntersperseSym1 l l

type IntersperseSym2 t t

data IntercalateSym0 l

data IntercalateSym1 l l

type IntercalateSym2 t t

data SubsequencesSym0 l

type SubsequencesSym1 t

data PermutationsSym0 l

type PermutationsSym1 t

data FoldlSym0 l

data FoldlSym1 l l

data FoldlSym2 l l l

type FoldlSym3 t t t

data Foldl'Sym0 l

data Foldl'Sym1 l l

data Foldl'Sym2 l l l

type Foldl'Sym3 t t t

data Foldl1Sym0 l

data Foldl1Sym1 l l

type Foldl1Sym2 t t

data Foldl1'Sym0 l

data Foldl1'Sym1 l l

type Foldl1'Sym2 t t

data FoldrSym0 l

data FoldrSym1 l l

data FoldrSym2 l l l

type FoldrSym3 t t t

data Foldr1Sym0 l

data Foldr1Sym1 l l

type Foldr1Sym2 t t

data ConcatSym0 l

type ConcatSym1 t

data ConcatMapSym0 l

data ConcatMapSym1 l l

type ConcatMapSym2 t t

data AndSym0 l

type AndSym1 t

data OrSym0 l

type OrSym1 t

data Any_Sym0 l

data Any_Sym1 l l

type Any_Sym2 t t

data AllSym0 l

data AllSym1 l l

type AllSym2 t t

data ScanlSym0 l

data ScanlSym1 l l

data ScanlSym2 l l l

type ScanlSym3 t t t

data Scanl1Sym0 l

data Scanl1Sym1 l l

type Scanl1Sym2 t t

data ScanrSym0 l

data ScanrSym1 l l

data ScanrSym2 l l l

type ScanrSym3 t t t

data Scanr1Sym0 l

data Scanr1Sym1 l l

type Scanr1Sym2 t t

data MapAccumLSym0 l

data MapAccumLSym1 l l

data MapAccumLSym2 l l l

type MapAccumLSym3 t t t

data MapAccumRSym0 l

data MapAccumRSym1 l l

data MapAccumRSym2 l l l

type MapAccumRSym3 t t t

data UnfoldrSym0 l

data UnfoldrSym1 l l

type UnfoldrSym2 t t

data InitsSym0 l

type InitsSym1 t

data TailsSym0 l

type TailsSym1 t

data IsPrefixOfSym0 l

data IsPrefixOfSym1 l l

type IsPrefixOfSym2 t t

data IsSuffixOfSym0 l

data IsSuffixOfSym1 l l

type IsSuffixOfSym2 t t

data IsInfixOfSym0 l

data IsInfixOfSym1 l l

type IsInfixOfSym2 t t

data ElemSym0 l

data ElemSym1 l l

type ElemSym2 t t

data NotElemSym0 l

data NotElemSym1 l l

type NotElemSym2 t t

data ZipSym0 l

data ZipSym1 l l

type ZipSym2 t t

data Zip3Sym0 l

data Zip3Sym1 l l

data Zip3Sym2 l l l

type Zip3Sym3 t t t

data ZipWithSym0 l

data ZipWithSym1 l l

data ZipWithSym2 l l l

type ZipWithSym3 t t t

data ZipWith3Sym0 l

data ZipWith3Sym1 l l

data ZipWith3Sym2 l l l

data ZipWith3Sym3 l l l l

type ZipWith3Sym4 t t t t

data UnzipSym0 l

type UnzipSym1 t

data Unzip3Sym0 l

type Unzip3Sym1 t

data Unzip4Sym0 l

type Unzip4Sym1 t

data Unzip5Sym0 l

type Unzip5Sym1 t

data Unzip6Sym0 l

type Unzip6Sym1 t

data Unzip7Sym0 l

type Unzip7Sym1 t

data DeleteSym0 l

data DeleteSym1 l l

type DeleteSym2 t t

data (:\\$) l

data l :\\$$ l

type t :\\$$$ t

data IntersectSym0 l

data IntersectSym1 l l

type IntersectSym2 t t

data InsertSym0 l

data InsertSym1 l l

type InsertSym2 t t

data SortSym0 l

type SortSym1 t

data DeleteBySym0 l

data DeleteBySym1 l l

data DeleteBySym2 l l l

type DeleteBySym3 t t t

data DeleteFirstsBySym0 l

data DeleteFirstsBySym1 l l

data DeleteFirstsBySym2 l l l

type DeleteFirstsBySym3 t t t

data IntersectBySym0 l

data IntersectBySym1 l l

data IntersectBySym2 l l l

data SortBySym0 l

data SortBySym1 l l

type SortBySym2 t t

data InsertBySym0 l

data InsertBySym1 l l

data InsertBySym2 l l l

type InsertBySym3 t t t

data MaximumBySym0 l

data MaximumBySym1 l l

type MaximumBySym2 t t

data MinimumBySym0 l

data MinimumBySym1 l l

type MinimumBySym2 t t

data LengthSym0 l

type LengthSym1 t

data SumSym0 l

type SumSym1 t

data ProductSym0 l

type ProductSym1 t

data ReplicateSym0 l

data ReplicateSym1 l l

type ReplicateSym2 t t

data TransposeSym0 l

type TransposeSym1 t

data TakeSym0 l

data TakeSym1 l l

type TakeSym2 t t

data DropSym0 l

data DropSym1 l l

type DropSym2 t t

data SplitAtSym0 l

data SplitAtSym1 l l

type SplitAtSym2 t t

data TakeWhileSym0 l

data TakeWhileSym1 l l

type TakeWhileSym2 t t

data DropWhileSym0 l

data DropWhileSym1 l l

type DropWhileSym2 t t

data DropWhileEndSym0 l

data DropWhileEndSym1 l l

type DropWhileEndSym2 t t

data SpanSym0 l

data SpanSym1 l l

type SpanSym2 t t

data BreakSym0 l

data BreakSym1 l l

type BreakSym2 t t

data StripPrefixSym0 l

data StripPrefixSym1 l l

type StripPrefixSym2 t t

data MaximumSym0 l

type MaximumSym1 t

data MinimumSym0 l

type MinimumSym1 t

data GroupSym0 l

type GroupSym1 t

data GroupBySym0 l

data GroupBySym1 l l

type GroupBySym2 t t

data LookupSym0 l

data LookupSym1 l l

type LookupSym2 t t

data FindSym0 l

data FindSym1 l l

type FindSym2 t t

data FilterSym0 l

data FilterSym1 l l

type FilterSym2 t t

data PartitionSym0 l

data PartitionSym1 l l

type PartitionSym2 t t

data (:!!$) l

data l :!!$$ l

type t :!!$$$ t

data ElemIndexSym0 l

data ElemIndexSym1 l l

type ElemIndexSym2 t t

data ElemIndicesSym0 l

data ElemIndicesSym1 l l

type ElemIndicesSym2 t t

data FindIndexSym0 l

data FindIndexSym1 l l

type FindIndexSym2 t t

data FindIndicesSym0 l

data FindIndicesSym1 l l

type FindIndicesSym2 t t

data Zip4Sym0 l

data Zip4Sym1 l l

data Zip4Sym2 l l l

data Zip4Sym3 l l l l

type Zip4Sym4 t t t t

data Zip5Sym0 l

data Zip5Sym1 l l

data Zip5Sym2 l l l

data Zip5Sym3 l l l l

data Zip5Sym4 l l l l l

type Zip5Sym5 t t t t t

data Zip6Sym0 l

data Zip6Sym1 l l

data Zip6Sym2 l l l

data Zip6Sym3 l l l l

data Zip6Sym4 l l l l l

data Zip6Sym5 l l l l l l

type Zip6Sym6 t t t t t t

data Zip7Sym0 l

data Zip7Sym1 l l

data Zip7Sym2 l l l

data Zip7Sym3 l l l l

data Zip7Sym4 l l l l l

data Zip7Sym5 l l l l l l

data Zip7Sym6 l l l l l l l

type Zip7Sym7 t t t t t t t

data ZipWith4Sym0 l

data ZipWith4Sym1 l l

data ZipWith4Sym2 l l l

data ZipWith4Sym3 l l l l

data ZipWith4Sym4 l l l l l

type ZipWith4Sym5 t t t t t

data ZipWith5Sym0 l

data ZipWith5Sym1 l l

data ZipWith5Sym2 l l l

data ZipWith5Sym3 l l l l

data ZipWith5Sym4 l l l l l

data ZipWith5Sym5 l l l l l l

type ZipWith5Sym6 t t t t t t

data ZipWith6Sym0 l

data ZipWith6Sym1 l l

data ZipWith6Sym2 l l l

data ZipWith6Sym3 l l l l

data ZipWith6Sym4 l l l l l

data ZipWith6Sym5 l l l l l l

data ZipWith6Sym6 l l l l l l l

type ZipWith6Sym7 t t t t t t t

data ZipWith7Sym0 l

data ZipWith7Sym1 l l

data ZipWith7Sym2 l l l

data ZipWith7Sym3 l l l l

data ZipWith7Sym4 l l l l l

data ZipWith7Sym5 l l l l l l

data ZipWith7Sym6 l l l l l l l

data ZipWith7Sym7 l l l l l l l l

type ZipWith7Sym8 t t t t t t t t

data NubSym0 l

type NubSym1 t

data NubBySym0 l

data NubBySym1 l l

type NubBySym2 t t

data UnionSym0 l

data UnionSym1 l l

type UnionSym2 t t

data UnionBySym0 l

data UnionBySym1 l l

data UnionBySym2 l l l

type UnionBySym3 t t t

data GenericLengthSym0 l

type GenericLengthSym1 t

data GenericTakeSym0 l

data GenericTakeSym1 l l

type GenericTakeSym2 t t

data GenericDropSym0 l

data GenericDropSym1 l l

type GenericDropSym2 t t

data GenericSplitAtSym0 l

data GenericSplitAtSym1 l l

type GenericSplitAtSym2 t t

data GenericIndexSym0 l

data GenericIndexSym1 l l

type GenericIndexSym2 t t

data GenericReplicateSym0 l

data GenericReplicateSym1 l l

type GenericReplicateSym2 t t