Data.Promotion.Prelude

Standard types, classes and related functions

Basic data types

type family If k (cond :: Bool) (tru :: k) (fls :: k) :: k where ...

type family Not (a :: Bool) :: Bool where ...

type family (a :: Bool) :&& (a :: Bool) :: Bool where ...

type family (a :: Bool) :|| (a :: Bool) :: Bool where ...

type family Otherwise :: Bool where ...

maybe_

type family Maybe_ (a :: b) (a :: TyFun a b -> Type) (a :: Maybe a) :: b where ...

either_

type family Either_ (a :: TyFun a c -> Type) (a :: TyFun b c -> Type) (a :: Either a b) :: c where ...

data Symbol

type family Fst (a :: (a, b)) :: a where ...

type family Snd (a :: (a, b)) :: b where ...

type family Curry (a :: TyFun (a, b) c -> Type) (a :: a) (a :: b) :: c where ...

type family Uncurry (a :: TyFun a (TyFun b c -> Type) -> Type) (a :: (a, b)) :: c where ...

Error reporting

type family Error (str :: k0) :: k

data ErrorSym0 l

Promoted equality

Promoted comparisons

Promoted enumerations

Promoted numbers

Miscellaneous functions

type family Id (a :: a) :: a where ...

type family Const (a :: a) (a :: b) :: a where ...

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

type family (f :: TyFun a b -> *) $ (x :: a) :: b

type family (f :: TyFun a b -> *) $! (x :: a) :: b

type family Flip (a :: TyFun a (TyFun b c -> Type) -> Type) (a :: b) (a :: a) :: c where ...

type family AsTypeOf (a :: a) (a :: a) :: a where ...

type family Until (a :: TyFun a Bool -> Type) (a :: TyFun a a -> Type) (a :: a) :: a where ...

type family Seq (a :: a) (a :: b) :: b where ...

List operations

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

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

type family Filter (a :: TyFun a Bool -> Type) (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 ...

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

type family Reverse (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 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 And (a :: [Bool]) :: Bool where ...

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

any_

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 Concat (a :: [[a]]) :: [a] where ...

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

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

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

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 ...

Infinite lists

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

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 Span (a :: TyFun a Bool -> Type) (a :: [a]) :: ([a], [a]) where ...

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

Searching lists

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 ...

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 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 Unzip (a :: [(a, b)]) :: ([a], [b]) where ...

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

Other datatypes

data Proxy k t

Defunctionalization symbols

type FalseSym0

type TrueSym0

data NotSym0 l

type NotSym1 t

data (:&&$) l

data l :&&$$ l

type t :&&$$$ t

data (:||$) l

data l :||$$ l

type t :||$$$ t

type OtherwiseSym0

type NothingSym0

data JustSym0 l

type JustSym1 t

data Maybe_Sym0 l

data Maybe_Sym1 l l

data Maybe_Sym2 l l l

type Maybe_Sym3 t t t

data LeftSym0 l

type LeftSym1 t

data RightSym0 l

type RightSym1 t

data Either_Sym0 l

data Either_Sym1 l l

data Either_Sym2 l l l

type Either_Sym3 t t t

type Tuple0Sym0

data Tuple2Sym0 l

data Tuple2Sym1 l l

type Tuple2Sym2 t t

data Tuple3Sym0 l

data Tuple3Sym1 l l

data Tuple3Sym2 l l l

type Tuple3Sym3 t t t

data Tuple4Sym0 l

data Tuple4Sym1 l l

data Tuple4Sym2 l l l

data Tuple4Sym3 l l l l

type Tuple4Sym4 t t t t

data Tuple5Sym0 l

data Tuple5Sym1 l l

data Tuple5Sym2 l l l

data Tuple5Sym3 l l l l

data Tuple5Sym4 l l l l l

type Tuple5Sym5 t t t t t

data Tuple6Sym0 l

data Tuple6Sym1 l l

data Tuple6Sym2 l l l

data Tuple6Sym3 l l l l

data Tuple6Sym4 l l l l l

data Tuple6Sym5 l l l l l l

type Tuple6Sym6 t t t t t t

data Tuple7Sym0 l

data Tuple7Sym1 l l

data Tuple7Sym2 l l l

data Tuple7Sym3 l l l l

data Tuple7Sym4 l l l l l

data Tuple7Sym5 l l l l l l

data Tuple7Sym6 l l l l l l l

type Tuple7Sym7 t t t t t t t

data FstSym0 l

type FstSym1 t

data SndSym0 l

type SndSym1 t

data CurrySym0 l

data CurrySym1 l l

data CurrySym2 l l l

type CurrySym3 t t t

data UncurrySym0 l

data UncurrySym1 l l

type UncurrySym2 t t

data (:^$) l

data l :^$$ l

data IdSym0 l

type IdSym1 t

data ConstSym0 l

data ConstSym1 l l

type ConstSym2 t t

data (:.$) l

data l :.$$ l

data (l :.$$$ l) l

data ($$)

data ($$$)

type a $$$$ b

data ($!$)

data ($!$$)

type a $!$$$ b

data FlipSym0 l

data FlipSym1 l l

data FlipSym2 l l l

data AsTypeOfSym0 l

data AsTypeOfSym1 l l

type AsTypeOfSym2 t t

data SeqSym0 l

data SeqSym1 l l

type SeqSym2 t t

data (:$) l

data l :$$ l

type t :$$$ t

type NilSym0

data MapSym0 l

data MapSym1 l l

type MapSym2 t t

data ReverseSym0 l

type ReverseSym1 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 FoldlSym0 l

data FoldlSym1 l l

data FoldlSym2 l l l

type FoldlSym3 t t t

data Foldl1Sym0 l

data Foldl1Sym1 l l

type Foldl1Sym2 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 MaximumBySym0 l

data MaximumBySym1 l l

type MaximumBySym2 t t

data MinimumBySym0 l

data MinimumBySym1 l l

type MinimumBySym2 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 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

data UnzipSym0 l

type UnzipSym1 t

data UntilSym0 l

data UntilSym1 l l

data UntilSym2 l l l

type UntilSym3 t 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 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 SpanSym0 l

data SpanSym1 l l

type SpanSym2 t t

data BreakSym0 l

data BreakSym1 l l

type BreakSym2 t t

data LookupSym0 l

data LookupSym1 l l

type LookupSym2 t t

data FilterSym0 l

data FilterSym1 l l

type FilterSym2 t t

data (:!!$) l

data l :!!$$ l

type t :!!$$$ t