{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
#if __GLASGOW_HASKELL__ < 806
{-# LANGUAGE TypeInType #-}
#endif
{-# OPTIONS_GHC -Wno-deprecations #-}
#if __GLASGOW_HASKELL__ == 800 \
&& __GLASGOW_HASKELL_PATCHLEVEL1__ == 1
{-# OPTIONS_GHC -Wno-type-defaults #-}
#endif
module Data.Proxyless (
proxyless
, proxyHashless
, undefinedless
, theBitSize
, theIsSigned
, theBitSizeMaybe
, theFiniteBitSize
, theDataTypeOf
, theTypeNatTypeRep
, theTypeRep
, theTypeRep#
, theTypeSymbolTypeRep
, theSizeOf
, theAlignment
, theDatatypeName
, theModuleName
, theIsNewtype
, thePackageName
, theConName
, theConFixity
, theConIsRecord
, theSelName
, theSelSourceUnpackedness
, theSelSourceStrictness
, theSelDecidedStrictness
, theFromLabel
, theNatVal
, theNatVal'
, theSameNat
, theSameSymbol
, theSomeNat
, theSomeSymbol
, theSymbolVal
, theSymbolVal'
, theFloatRadix
, theFloatDigits
, theFloatRange
, theParseFormat
) where
import Data.Bits (Bits(..), FiniteBits(..))
import Data.Data (Data(dataTypeOf), DataType)
import Data.Proxy (Proxy(..))
import Data.Type.Equality ((:~:))
import Data.Typeable (Typeable, TypeRep, typeRep)
#if !(MIN_VERSION_base(4,10,0))
import Data.Typeable.Internal (typeRep#, typeNatTypeRep, typeSymbolTypeRep)
#endif
import Foreign.Storable (Storable(..))
import GHC.Exts (Proxy#, proxy#)
import GHC.Generics
import GHC.OverloadedLabels (IsLabel(..))
import GHC.TypeLits
import Text.Printf (PrintfArg(..), ModifierParser)
proxyless :: forall k (a :: k) b. (Proxy a -> b) -> b
proxyless :: forall k (a :: k) b. (Proxy a -> b) -> b
proxyless Proxy a -> b
f = Proxy a -> b
f Proxy a
forall {k} (t :: k). Proxy t
Proxy
proxyHashless :: forall k (a :: k) b. (Proxy# a -> b) -> b
proxyHashless :: forall k (a :: k) b. (Proxy# a -> b) -> b
proxyHashless Proxy# a -> b
f = Proxy# a -> b
f Proxy# a
forall {k} (a :: k). Proxy# a
proxy#
undefinedless :: forall a b. (a -> b) -> b
undefinedless :: forall a b. (a -> b) -> b
undefinedless a -> b
f = a -> b
f a
forall a. HasCallStack => a
undefined
theBitSize :: forall a. Bits a => Int
theBitSize :: forall a. Bits a => Int
theBitSize = forall a b. (a -> b) -> b
undefinedless @a a -> Int
forall a. Bits a => a -> Int
bitSize
theIsSigned :: forall a. Bits a => Bool
theIsSigned :: forall a. Bits a => Bool
theIsSigned = forall a b. (a -> b) -> b
undefinedless @a a -> Bool
forall a. Bits a => a -> Bool
isSigned
theBitSizeMaybe :: forall a. Bits a => Maybe Int
theBitSizeMaybe :: forall a. Bits a => Maybe Int
theBitSizeMaybe = forall a b. (a -> b) -> b
undefinedless @a a -> Maybe Int
forall a. Bits a => a -> Maybe Int
bitSizeMaybe
theFiniteBitSize :: forall a. FiniteBits a => Int
theFiniteBitSize :: forall a. FiniteBits a => Int
theFiniteBitSize = forall a b. (a -> b) -> b
undefinedless @a a -> Int
forall b. FiniteBits b => b -> Int
finiteBitSize
theDataTypeOf :: forall a. Data a => DataType
theDataTypeOf :: forall a. Data a => DataType
theDataTypeOf = forall a b. (a -> b) -> b
undefinedless @a a -> DataType
forall a. Data a => a -> DataType
dataTypeOf
theTypeNatTypeRep :: forall a. KnownNat a => TypeRep
#if MIN_VERSION_base(4,10,0)
theTypeNatTypeRep :: forall (a :: Nat). KnownNat a => TypeRep
theTypeNatTypeRep = forall k (a :: k). Typeable a => TypeRep
theTypeRep @_ @a
#else
theTypeNatTypeRep = proxyHashless @_ @a typeNatTypeRep
#endif
theTypeRep :: forall k (a :: k). Typeable a => TypeRep
theTypeRep :: forall k (a :: k). Typeable a => TypeRep
theTypeRep = forall k (a :: k) b. (Proxy a -> b) -> b
proxyless @_ @a Proxy a -> TypeRep
forall {k} (proxy :: k -> *) (a :: k).
Typeable a =>
proxy a -> TypeRep
typeRep
theTypeRep# :: forall k (a :: k). Typeable a => TypeRep
#if MIN_VERSION_base(4,10,0)
theTypeRep# :: forall k (a :: k). Typeable a => TypeRep
theTypeRep# = forall k (a :: k). Typeable a => TypeRep
theTypeRep @k @a
#else
theTypeRep# = proxyHashless @_ @a typeRep#
#endif
theTypeSymbolTypeRep :: forall a. KnownSymbol a => TypeRep
#if MIN_VERSION_base(4,10,0)
theTypeSymbolTypeRep :: forall (a :: Symbol). KnownSymbol a => TypeRep
theTypeSymbolTypeRep = forall k (a :: k). Typeable a => TypeRep
theTypeRep @_ @a
#else
theTypeSymbolTypeRep = proxyHashless @_ @a typeSymbolTypeRep
#endif
theSizeOf :: forall a. Storable a => Int
theSizeOf :: forall a. Storable a => Int
theSizeOf = forall a b. (a -> b) -> b
undefinedless @a a -> Int
forall a. Storable a => a -> Int
sizeOf
theAlignment :: forall a. Storable a => Int
theAlignment :: forall a. Storable a => Int
theAlignment = forall a b. (a -> b) -> b
undefinedless @a a -> Int
forall a. Storable a => a -> Int
alignment
theDatatypeName :: forall k (d :: k). Datatype d => [Char]
theDatatypeName :: forall k (d :: k). Datatype d => [Char]
theDatatypeName = forall (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Datatype d =>
t d f a -> [Char]
forall {k} (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Datatype d =>
t d f a -> [Char]
datatypeName @d Any d Any Any
forall a. HasCallStack => a
undefined
theModuleName :: forall k (d :: k). Datatype d => [Char]
theModuleName :: forall k (d :: k). Datatype d => [Char]
theModuleName = forall (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Datatype d =>
t d f a -> [Char]
forall {k} (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Datatype d =>
t d f a -> [Char]
moduleName @d Any d Any Any
forall a. HasCallStack => a
undefined
theIsNewtype :: forall k (d :: k). Datatype d => Bool
theIsNewtype :: forall k (d :: k). Datatype d => Bool
theIsNewtype = forall (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Datatype d =>
t d f a -> Bool
forall {k} (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Datatype d =>
t d f a -> Bool
isNewtype @d Any d Any Any
forall a. HasCallStack => a
undefined
thePackageName :: forall k (d :: k). Datatype d => [Char]
thePackageName :: forall k (d :: k). Datatype d => [Char]
thePackageName = forall (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Datatype d =>
t d f a -> [Char]
forall {k} (d :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Datatype d =>
t d f a -> [Char]
packageName @d Any d Any Any
forall a. HasCallStack => a
undefined
theConName :: forall k (c :: k). Constructor c => [Char]
theConName :: forall k (c :: k). Constructor c => [Char]
theConName = forall (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Constructor c =>
t c f a -> [Char]
forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName @c Any c Any Any
forall a. HasCallStack => a
undefined
theConFixity :: forall k (c :: k). Constructor c => Fixity
theConFixity :: forall k (c :: k). Constructor c => Fixity
theConFixity = forall (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Constructor c =>
t c f a -> Fixity
forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> Fixity
conFixity @c Any c Any Any
forall a. HasCallStack => a
undefined
theConIsRecord :: forall k (c :: k). Constructor c => Bool
theConIsRecord :: forall k (c :: k). Constructor c => Bool
theConIsRecord = forall (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Constructor c =>
t c f a -> Bool
forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> Bool
conIsRecord @c Any c Any Any
forall a. HasCallStack => a
undefined
theSelName :: forall k (s :: k). Selector s => [Char]
theSelName :: forall k (s :: k). Selector s => [Char]
theSelName = forall (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Selector s =>
t s f a -> [Char]
forall {k} (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Selector s =>
t s f a -> [Char]
selName @s Any s Any Any
forall a. HasCallStack => a
undefined
theSelSourceUnpackedness :: forall k (s :: k). Selector s => SourceUnpackedness
theSelSourceUnpackedness :: forall k (s :: k). Selector s => SourceUnpackedness
theSelSourceUnpackedness = forall (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Selector s =>
t s f a -> SourceUnpackedness
forall {k} (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Selector s =>
t s f a -> SourceUnpackedness
selSourceUnpackedness @s Any s Any Any
forall a. HasCallStack => a
undefined
theSelSourceStrictness :: forall k (s :: k). Selector s => SourceStrictness
theSelSourceStrictness :: forall k (s :: k). Selector s => SourceStrictness
theSelSourceStrictness = forall (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Selector s =>
t s f a -> SourceStrictness
forall {k} (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Selector s =>
t s f a -> SourceStrictness
selSourceStrictness @s Any s Any Any
forall a. HasCallStack => a
undefined
theSelDecidedStrictness :: forall k (s :: k). Selector s => DecidedStrictness
theSelDecidedStrictness :: forall k (s :: k). Selector s => DecidedStrictness
theSelDecidedStrictness = forall (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *) (f :: k1 -> *)
(a :: k1).
Selector s =>
t s f a -> DecidedStrictness
forall {k} (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Selector s =>
t s f a -> DecidedStrictness
selDecidedStrictness @s Any s Any Any
forall a. HasCallStack => a
undefined
theFromLabel :: forall x a. IsLabel x a => a
#if MIN_VERSION_base(4,10,0)
theFromLabel :: forall (x :: Symbol) a. IsLabel x a => a
theFromLabel = forall (x :: Symbol) a. IsLabel x a => a
fromLabel @x
#else
theFromLabel = proxyHashless @_ @x fromLabel
#endif
theNatVal :: forall n. KnownNat n => Integer
theNatVal :: forall (n :: Nat). KnownNat n => Integer
theNatVal = forall k (a :: k) b. (Proxy a -> b) -> b
proxyless @_ @n Proxy n -> Integer
forall (n :: Nat) (proxy :: Nat -> *).
KnownNat n =>
proxy n -> Integer
natVal
theNatVal' :: forall n. KnownNat n => Integer
theNatVal' :: forall (n :: Nat). KnownNat n => Integer
theNatVal' = forall k (a :: k) b. (Proxy# a -> b) -> b
proxyHashless @_ @n Proxy# n -> Integer
forall (n :: Nat). KnownNat n => Proxy# n -> Integer
natVal'
theSameNat :: forall a b. (KnownNat a, KnownNat b) => Maybe (a :~: b)
theSameNat :: forall (a :: Nat) (b :: Nat).
(KnownNat a, KnownNat b) =>
Maybe (a :~: b)
theSameNat = Proxy a -> Proxy b -> Maybe (a :~: b)
forall (a :: Nat) (b :: Nat) (proxy1 :: Nat -> *)
(proxy2 :: Nat -> *).
(KnownNat a, KnownNat b) =>
proxy1 a -> proxy2 b -> Maybe (a :~: b)
sameNat (forall (t :: Nat). Proxy t
forall {k} (t :: k). Proxy t
Proxy @a) (forall (t :: Nat). Proxy t
forall {k} (t :: k). Proxy t
Proxy @b)
theSameSymbol :: forall a b. (KnownSymbol a, KnownSymbol b) => Maybe (a :~: b)
theSameSymbol :: forall (a :: Symbol) (b :: Symbol).
(KnownSymbol a, KnownSymbol b) =>
Maybe (a :~: b)
theSameSymbol = Proxy a -> Proxy b -> Maybe (a :~: b)
forall (a :: Symbol) (b :: Symbol) (proxy1 :: Symbol -> *)
(proxy2 :: Symbol -> *).
(KnownSymbol a, KnownSymbol b) =>
proxy1 a -> proxy2 b -> Maybe (a :~: b)
sameSymbol (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
Proxy @a) (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
Proxy @b)
theSomeNat :: forall n. KnownNat n => SomeNat
theSomeNat :: forall (n :: Nat). KnownNat n => SomeNat
theSomeNat = forall k (a :: k) b. (Proxy a -> b) -> b
proxyless @_ @n Proxy n -> SomeNat
forall (n :: Nat). KnownNat n => Proxy n -> SomeNat
SomeNat
theSomeSymbol :: forall n. KnownSymbol n => SomeSymbol
theSomeSymbol :: forall (n :: Symbol). KnownSymbol n => SomeSymbol
theSomeSymbol = forall k (a :: k) b. (Proxy a -> b) -> b
proxyless @_ @n Proxy n -> SomeSymbol
forall (n :: Symbol). KnownSymbol n => Proxy n -> SomeSymbol
SomeSymbol
theSymbolVal :: forall n. KnownSymbol n => String
theSymbolVal :: forall (n :: Symbol). KnownSymbol n => [Char]
theSymbolVal = forall k (a :: k) b. (Proxy a -> b) -> b
proxyless @_ @n Proxy n -> [Char]
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> [Char]
symbolVal
theSymbolVal' :: forall n. KnownSymbol n => String
theSymbolVal' :: forall (n :: Symbol). KnownSymbol n => [Char]
theSymbolVal' = forall k (a :: k) b. (Proxy# a -> b) -> b
proxyHashless @_ @n Proxy# n -> [Char]
forall (n :: Symbol). KnownSymbol n => Proxy# n -> [Char]
symbolVal'
theFloatRadix :: forall a. RealFloat a => Integer
theFloatRadix :: forall a. RealFloat a => Integer
theFloatRadix = forall a b. (a -> b) -> b
undefinedless @a a -> Integer
forall a. RealFloat a => a -> Integer
floatRadix
theFloatDigits :: forall a. RealFloat a => Int
theFloatDigits :: forall a. RealFloat a => Int
theFloatDigits = forall a b. (a -> b) -> b
undefinedless @a a -> Int
forall a. RealFloat a => a -> Int
floatDigits
theFloatRange :: forall a. RealFloat a => (Int, Int)
theFloatRange :: forall a. RealFloat a => (Int, Int)
theFloatRange = forall a b. (a -> b) -> b
undefinedless @a a -> (Int, Int)
forall a. RealFloat a => a -> (Int, Int)
floatRange
theParseFormat :: forall a. PrintfArg a => ModifierParser
theParseFormat :: forall a. PrintfArg a => ModifierParser
theParseFormat = forall a b. (a -> b) -> b
undefinedless @a a -> ModifierParser
forall a. PrintfArg a => a -> ModifierParser
parseFormat