singletons-2.4: src/Data/Promotion/Prelude.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.Promotion.Prelude
-- Copyright : (C) 2014 Jan Stolarek
-- License : BSD-style (see LICENSE)
-- Maintainer : Jan Stolarek (jan.stolarek@p.lodz.pl)
-- Stability : experimental
-- Portability : non-portable
--
-- Mimics the Haskell Prelude, but with promoted types.
--
----------------------------------------------------------------------------
{-# LANGUAGE ExplicitNamespaces #-}
module Data.Promotion.Prelude (
-- * Standard types, classes and related functions
-- ** Basic data types
If, Not, type (&&), type (||), Otherwise,
maybe_, Maybe_, either_, Either_,
Symbol,
Fst, Snd, Curry, Uncurry,
-- * Error reporting
Error, Undefined,
-- * Promoted equality
module Data.Promotion.Prelude.Eq,
-- * Promoted comparisons
module Data.Promotion.Prelude.Ord,
-- * Promoted enumerations
-- | As a matter of convenience, the promoted Prelude does /not/ export
-- promoted @succ@ and @pred@, due to likely conflicts with
-- unary numbers. Please import 'Data.Promotion.Prelude.Enum' directly if
-- you want these.
module Data.Promotion.Prelude.Enum,
-- * Promoted numbers
module Data.Promotion.Prelude.Num,
type (^),
-- * Promoted 'Show'
PShow(..), ShowS, SChar, show_, type (<>), Shows, ShowChar, ShowString, ShowParen,
-- ** Miscellaneous functions
Id, Const, (:.), type ($), type ($!), Flip, AsTypeOf, Until, Seq,
-- * List operations
Map, type (++), Filter,
Head, Last, Tail, Init, Null, Length, type (!!),
Reverse,
-- ** Reducing lists (folds)
Foldl, Foldl1, Foldr, Foldr1,
-- *** Special folds
And, Or, Any, All,
Sum, Product,
Concat, ConcatMap,
Maximum, Minimum,
-- ** Building lists
-- *** Scans
Scanl, Scanl1, Scanr, Scanr1,
-- *** Infinite lists
Replicate,
-- ** Sublists
Take, Drop, SplitAt,
TakeWhile, DropWhile, Span, Break,
-- ** Searching lists
Elem, NotElem, Lookup,
-- ** Zipping and unzipping lists
Zip, Zip3, ZipWith, ZipWith3, Unzip, Unzip3,
-- ** Functions on 'Symbol's
Unlines, Unwords,
-- * Defunctionalization symbols
FalseSym0, TrueSym0,
NotSym0, NotSym1,
type (&&@#@$), type (&&@#@$$), type (&&@#@$$$),
type (||@#@$), type (||@#@$$), type (||@#@$$$),
OtherwiseSym0,
NothingSym0, JustSym0, JustSym1,
Maybe_Sym0, Maybe_Sym1, Maybe_Sym2, Maybe_Sym3,
LeftSym0, LeftSym1, RightSym0, RightSym1,
Either_Sym0, Either_Sym1, Either_Sym2, Either_Sym3,
Tuple0Sym0,
Tuple2Sym0, Tuple2Sym1, Tuple2Sym2,
Tuple3Sym0, Tuple3Sym1, Tuple3Sym2, Tuple3Sym3,
Tuple4Sym0, Tuple4Sym1, Tuple4Sym2, Tuple4Sym3, Tuple4Sym4,
Tuple5Sym0, Tuple5Sym1, Tuple5Sym2, Tuple5Sym3, Tuple5Sym4, Tuple5Sym5,
Tuple6Sym0, Tuple6Sym1, Tuple6Sym2, Tuple6Sym3, Tuple6Sym4, Tuple6Sym5, Tuple6Sym6,
Tuple7Sym0, Tuple7Sym1, Tuple7Sym2, Tuple7Sym3, Tuple7Sym4, Tuple7Sym5, Tuple7Sym6, Tuple7Sym7,
FstSym0, FstSym1, SndSym0, SndSym1,
CurrySym0, CurrySym1, CurrySym2, CurrySym3,
UncurrySym0, UncurrySym1, UncurrySym2,
ErrorSym0, ErrorSym1, UndefinedSym0,
type (^@#@$), type (^@#@$$), type (^@#@$$$),
ShowsPrecSym0, ShowsPrecSym1, ShowsPrecSym2, ShowsPrecSym3,
Show_Sym0, Show_Sym1,
ShowListSym0, ShowListSym1, ShowListSym2,
type (<>@#@$), type (<>@#@$$), type (<>@#@$$$),
ShowsSym0, ShowsSym1, ShowsSym2,
ShowCharSym0, ShowCharSym1, ShowCharSym2,
ShowStringSym0, ShowStringSym1, ShowStringSym2,
ShowParenSym0, ShowParenSym1, ShowParenSym2,
IdSym0, IdSym1, ConstSym0, ConstSym1, ConstSym2,
type (.@#@$), type (.@#@$$), type (.@#@$$$),
type ($@#@$), type ($@#@$$), type ($@#@$$$),
type ($!@#@$), type ($!@#@$$), type ($!@#@$$$),
FlipSym0, FlipSym1, FlipSym2,
AsTypeOfSym0, AsTypeOfSym1, AsTypeOfSym2, SeqSym0, SeqSym1, SeqSym2,
(:@#@$), (:@#@$$), (:@#@$$$), NilSym0,
MapSym0, MapSym1, MapSym2, ReverseSym0, ReverseSym1,
type (++@#@$$), type (++@#@$), HeadSym0, HeadSym1, LastSym0, LastSym1,
TailSym0, TailSym1, InitSym0, InitSym1, NullSym0, NullSym1,
FoldlSym0, FoldlSym1, FoldlSym2, FoldlSym3,
Foldl1Sym0, Foldl1Sym1, Foldl1Sym2,
FoldrSym0, FoldrSym1, FoldrSym2, FoldrSym3,
Foldr1Sym0, Foldr1Sym1, Foldr1Sym2,
ConcatSym0, ConcatSym1,
ConcatMapSym0, ConcatMapSym1, ConcatMapSym2,
MaximumBySym0, MaximumBySym1, MaximumBySym2,
MinimumBySym0, MinimumBySym1, MinimumBySym2,
AndSym0, AndSym1, OrSym0, OrSym1,
AnySym0, AnySym1, AnySym2,
AllSym0, AllSym1, AllSym2,
ScanlSym0, ScanlSym1, ScanlSym2, ScanlSym3,
Scanl1Sym0, Scanl1Sym1, Scanl1Sym2,
ScanrSym0, ScanrSym1, ScanrSym2, ScanrSym3,
Scanr1Sym0, Scanr1Sym1, Scanr1Sym2,
ElemSym0, ElemSym1, ElemSym2,
NotElemSym0, NotElemSym1, NotElemSym2,
ZipSym0, ZipSym1, ZipSym2,
Zip3Sym0, Zip3Sym1, Zip3Sym2, Zip3Sym3,
ZipWithSym0, ZipWithSym1, ZipWithSym2, ZipWithSym3,
ZipWith3Sym0, ZipWith3Sym1, ZipWith3Sym2, ZipWith3Sym3,
UnzipSym0, UnzipSym1,
UnlinesSym0, UnlinesSym1, UnwordsSym0, UnwordsSym1,
UntilSym0, UntilSym1, UntilSym2, UntilSym3,
LengthSym0, LengthSym1,
SumSym0, SumSym1,
ProductSym0, ProductSym1,
ReplicateSym0, ReplicateSym1, ReplicateSym2,
TakeSym0, TakeSym1, TakeSym2,
DropSym0, DropSym1, DropSym2,
SplitAtSym0, SplitAtSym1, SplitAtSym2,
TakeWhileSym0, TakeWhileSym1, TakeWhileSym2,
DropWhileSym0, DropWhileSym1, DropWhileSym2,
SpanSym0, SpanSym1, SpanSym2,
BreakSym0, BreakSym1, BreakSym2,
LookupSym0, LookupSym1, LookupSym2,
FilterSym0, FilterSym1, FilterSym2,
type (!!@#@$), type (!!@#@$$), type (!!@#@$$$),
) where
import Data.Promotion.Prelude.Base
import Data.Promotion.Prelude.Bool
import Data.Promotion.Prelude.Either
import Data.Promotion.Prelude.List
import Data.Promotion.Prelude.Maybe
import Data.Promotion.Prelude.Tuple
import Data.Promotion.Prelude.Eq
import Data.Promotion.Prelude.Ord
import Data.Promotion.Prelude.Enum
hiding (Succ, Pred, SuccSym0, SuccSym1, PredSym0, PredSym1)
import Data.Promotion.Prelude.Num
import Data.Promotion.Prelude.Show
import Data.Singletons.TypeLits