{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE CPP #-}
module Type.Hint
(
hintType
, hintType1
, hintTypeArg
, hintType2
, hintType2Arg1
, hintType2Arg2
, hintType3
, hintType3Arg1
, hintType3Arg2
, hintType3Arg3
, Proxy(..)
, aUnit
, aChar
, anInteger
, anInt
, anInt8
, anInt16
, anInt32
, anInt64
, aWord
, aWord8
, aWord16
, aWord32
, aWord64
, aRatio
, aRatioOf
, aRational
, aFixed
, aFixedOf
, aUni
, aDeci
, aCenti
, aMilli
, aMicro
, aNano
, aPico
, aFloat
, aDouble
, aMaybe
, aMaybeOf
, aPair
, aPairOf
, aTriple
, aTripleOf
, anEither
, anEitherOf
, aList
, aListOf
, anIo
, anIoOf
, anIoRef
, anIoRefOf
, anSt
, anStOf
, anStRef
, anStRefOf
) where
import Data.Proxy (Proxy(..))
import Data.Word
import Data.Int
import Data.Fixed
import Data.Ratio
import Data.IORef (IORef)
import Data.STRef (STRef)
import Control.Monad.ST (ST)
infixl 1 `hintType`,
`hintType1`, `hintTypeArg`,
`hintType2`, `hintType2Arg1`, `hintType2Arg2`,
`hintType3`, `hintType3Arg1`, `hintType3Arg2`, `hintType3Arg3`
hintType ∷ α → p α → α
hintType :: α -> p α -> α
hintType = α -> p α -> α
forall a b. a -> b -> a
const
{-# INLINE hintType #-}
hintType1 ∷ f α → p f → f α
hintType1 :: f α -> p f -> f α
hintType1 = f α -> p f -> f α
forall a b. a -> b -> a
const
{-# INLINE hintType1 #-}
hintTypeArg ∷ f α → p α → f α
hintTypeArg :: f α -> p α -> f α
hintTypeArg = f α -> p α -> f α
forall a b. a -> b -> a
const
{-# INLINE hintTypeArg #-}
hintType2 ∷ f α β → p f → f α β
hintType2 :: f α β -> p f -> f α β
hintType2 = f α β -> p f -> f α β
forall a b. a -> b -> a
const
{-# INLINE hintType2 #-}
hintType2Arg1 ∷ f α β → p α → f α β
hintType2Arg1 :: f α β -> p α -> f α β
hintType2Arg1 = f α β -> p α -> f α β
forall a b. a -> b -> a
const
{-# INLINE hintType2Arg1 #-}
hintType2Arg2 ∷ f α β → p β → f α β
hintType2Arg2 :: f α β -> p β -> f α β
hintType2Arg2 = f α β -> p β -> f α β
forall a b. a -> b -> a
const
{-# INLINE hintType2Arg2 #-}
hintType3 ∷ f α β γ → p f → f α β γ
hintType3 :: f α β γ -> p f -> f α β γ
hintType3 = f α β γ -> p f -> f α β γ
forall a b. a -> b -> a
const
{-# INLINE hintType3 #-}
hintType3Arg1 ∷ f α β γ → p α → f α β γ
hintType3Arg1 :: f α β γ -> p α -> f α β γ
hintType3Arg1 = f α β γ -> p α -> f α β γ
forall a b. a -> b -> a
const
{-# INLINE hintType3Arg1 #-}
hintType3Arg2 ∷ f α β γ → p β → f α β γ
hintType3Arg2 :: f α β γ -> p β -> f α β γ
hintType3Arg2 = f α β γ -> p β -> f α β γ
forall a b. a -> b -> a
const
{-# INLINE hintType3Arg2 #-}
hintType3Arg3 ∷ f α β γ → p γ → f α β γ
hintType3Arg3 :: f α β γ -> p γ -> f α β γ
hintType3Arg3 = f α β γ -> p γ -> f α β γ
forall a b. a -> b -> a
const
{-# INLINE hintType3Arg3 #-}
aUnit ∷ Proxy ()
aUnit :: Proxy ()
aUnit = Proxy ()
forall k (t :: k). Proxy t
Proxy
aChar ∷ Proxy Char
aChar :: Proxy Char
aChar = Proxy Char
forall k (t :: k). Proxy t
Proxy
anInteger ∷ Proxy Integer
anInteger :: Proxy Integer
anInteger = Proxy Integer
forall k (t :: k). Proxy t
Proxy
anInt ∷ Proxy Int
anInt :: Proxy Int
anInt = Proxy Int
forall k (t :: k). Proxy t
Proxy
anInt8 ∷ Proxy Int8
anInt8 :: Proxy Int8
anInt8 = Proxy Int8
forall k (t :: k). Proxy t
Proxy
anInt16 ∷ Proxy Int16
anInt16 :: Proxy Int16
anInt16 = Proxy Int16
forall k (t :: k). Proxy t
Proxy
anInt32 ∷ Proxy Int32
anInt32 :: Proxy Int32
anInt32 = Proxy Int32
forall k (t :: k). Proxy t
Proxy
anInt64 ∷ Proxy Int64
anInt64 :: Proxy Int64
anInt64 = Proxy Int64
forall k (t :: k). Proxy t
Proxy
aWord ∷ Proxy Word
aWord :: Proxy Word
aWord = Proxy Word
forall k (t :: k). Proxy t
Proxy
aWord8 ∷ Proxy Word8
aWord8 :: Proxy Word8
aWord8 = Proxy Word8
forall k (t :: k). Proxy t
Proxy
aWord16 ∷ Proxy Word16
aWord16 :: Proxy Word16
aWord16 = Proxy Word16
forall k (t :: k). Proxy t
Proxy
aWord32 ∷ Proxy Word32
aWord32 :: Proxy Word32
aWord32 = Proxy Word32
forall k (t :: k). Proxy t
Proxy
aWord64 ∷ Proxy Word64
aWord64 :: Proxy Word64
aWord64 = Proxy Word64
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
aRatio ∷ Proxy Ratio
aRatio :: Proxy Ratio
aRatio = Proxy Ratio
forall k (t :: k). Proxy t
Proxy
#endif
aRatioOf ∷ Proxy α → Proxy (Ratio α)
aRatioOf :: Proxy α -> Proxy (Ratio α)
aRatioOf Proxy α
_ = Proxy (Ratio α)
forall k (t :: k). Proxy t
Proxy
aRational ∷ Proxy Rational
aRational :: Proxy Rational
aRational = Proxy Rational
forall k (t :: k). Proxy t
Proxy
aFixed ∷ Proxy Fixed
aFixed :: Proxy Fixed
aFixed = Proxy Fixed
forall k (t :: k). Proxy t
Proxy
aFixedOf ∷ Proxy α → Proxy (Fixed α)
aFixedOf :: Proxy α -> Proxy (Fixed α)
aFixedOf Proxy α
_ = Proxy (Fixed α)
forall k (t :: k). Proxy t
Proxy
aUni ∷ Proxy Uni
aUni :: Proxy Uni
aUni = Proxy Uni
forall k (t :: k). Proxy t
Proxy
aDeci ∷ Proxy Deci
aDeci :: Proxy Deci
aDeci = Proxy Deci
forall k (t :: k). Proxy t
Proxy
aCenti ∷ Proxy Centi
aCenti :: Proxy Centi
aCenti = Proxy Centi
forall k (t :: k). Proxy t
Proxy
aMilli ∷ Proxy Milli
aMilli :: Proxy Milli
aMilli = Proxy Milli
forall k (t :: k). Proxy t
Proxy
aMicro ∷ Proxy Micro
aMicro :: Proxy Micro
aMicro = Proxy Micro
forall k (t :: k). Proxy t
Proxy
aNano ∷ Proxy Nano
aNano :: Proxy Nano
aNano = Proxy Nano
forall k (t :: k). Proxy t
Proxy
aPico ∷ Proxy Pico
aPico :: Proxy Pico
aPico = Proxy Pico
forall k (t :: k). Proxy t
Proxy
aFloat ∷ Proxy Float
aFloat :: Proxy Float
aFloat = Proxy Float
forall k (t :: k). Proxy t
Proxy
aDouble ∷ Proxy Double
aDouble :: Proxy Double
aDouble = Proxy Double
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
aMaybe ∷ Proxy Maybe
aMaybe :: Proxy Maybe
aMaybe = Proxy Maybe
forall k (t :: k). Proxy t
Proxy
#endif
aMaybeOf ∷ Proxy α → Proxy (Maybe α)
aMaybeOf :: Proxy α -> Proxy (Maybe α)
aMaybeOf Proxy α
_ = Proxy (Maybe α)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
aPair ∷ Proxy (,)
aPair :: Proxy (,)
aPair = Proxy (,)
forall k (t :: k). Proxy t
Proxy
#endif
aPairOf ∷ Proxy α → Proxy β → Proxy (α, β)
aPairOf :: Proxy α -> Proxy β -> Proxy (α, β)
aPairOf Proxy α
_ Proxy β
_ = Proxy (α, β)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
aTriple ∷ Proxy (,,)
aTriple :: Proxy (,,)
aTriple = Proxy (,,)
forall k (t :: k). Proxy t
Proxy
#endif
aTripleOf ∷ Proxy α → Proxy β → Proxy γ → Proxy (α, β, γ)
aTripleOf :: Proxy α -> Proxy β -> Proxy γ -> Proxy (α, β, γ)
aTripleOf Proxy α
_ Proxy β
_ Proxy γ
_ = Proxy (α, β, γ)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
anEither ∷ Proxy Either
anEither :: Proxy Either
anEither = Proxy Either
forall k (t :: k). Proxy t
Proxy
#endif
anEitherOf ∷ Proxy α → Proxy β → Proxy (Either α β)
anEitherOf :: Proxy α -> Proxy β -> Proxy (Either α β)
anEitherOf Proxy α
_ Proxy β
_ = Proxy (Either α β)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
aList ∷ Proxy []
aList :: Proxy []
aList = Proxy []
forall k (t :: k). Proxy t
Proxy
#endif
aListOf ∷ Proxy α → Proxy ([α])
aListOf :: Proxy α -> Proxy [α]
aListOf Proxy α
_ = Proxy [α]
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
anIo ∷ Proxy IO
anIo :: Proxy IO
anIo = Proxy IO
forall k (t :: k). Proxy t
Proxy
#endif
anIoOf ∷ Proxy α → Proxy (IO α)
anIoOf :: Proxy α -> Proxy (IO α)
anIoOf Proxy α
_ = Proxy (IO α)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
anIoRef ∷ Proxy IORef
anIoRef :: Proxy IORef
anIoRef = Proxy IORef
forall k (t :: k). Proxy t
Proxy
#endif
anIoRefOf ∷ Proxy α → Proxy (IORef α)
anIoRefOf :: Proxy α -> Proxy (IORef α)
anIoRefOf Proxy α
_ = Proxy (IORef α)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
anSt ∷ Proxy ST
anSt :: Proxy ST
anSt = Proxy ST
forall k (t :: k). Proxy t
Proxy
#endif
anStOf ∷ Proxy α → Proxy (ST α)
anStOf :: Proxy α -> Proxy (ST α)
anStOf Proxy α
_ = Proxy (ST α)
forall k (t :: k). Proxy t
Proxy
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706
anStRef ∷ Proxy STRef
anStRef :: Proxy STRef
anStRef = Proxy STRef
forall k (t :: k). Proxy t
Proxy
#endif
anStRefOf ∷ Proxy α → Proxy (STRef α)
anStRefOf :: Proxy α -> Proxy (STRef α)
anStRefOf Proxy α
_ = Proxy (STRef α)
forall k (t :: k). Proxy t
Proxy