type-hint-0.1: Guide type inference with proxy values

Safe HaskellSafe
LanguageHaskell2010

Type.Hint

Contents

Description

This module provides Proxy values for various types from the base library and functions to use these values as hints for type inference.

Synopsis

Hinting functions

hintType :: α -> p α -> α infixl 1 #

Hint the type system about the type.

hintType1 :: f α -> p f -> f α infixl 1 #

Hint the type system about the type constructor.

hintTypeArg :: f α -> p α -> f α infixl 1 #

Hint the type system about the type argument.

hintType2 :: f α β -> p f -> f α β infixl 1 #

Hint the type system about the two-argument type constructor.

hintType2Arg1 :: f α β -> p α -> f α β infixl 1 #

Hint the type system about the first type argument.

hintType2Arg2 :: f α β -> p β -> f α β infixl 1 #

Hint the type system about the second type argument.

hintType3 :: f α β γ -> p f -> f α β γ infixl 1 #

Hint the type system about the three-argument type constructor.

hintType3Arg1 :: f α β γ -> p α -> f α β γ infixl 1 #

Hint the type system about the first type argument.

hintType3Arg2 :: f α β γ -> p β -> f α β γ infixl 1 #

Hint the type system about the second type argument.

hintType3Arg3 :: f α β γ -> p γ -> f α β γ infixl 1 #

Hint the type system about the third type argument.

Standard types proxies

data Proxy k t :: forall k. k -> * #

A concrete, poly-kinded proxy type

Constructors

Proxy 

Instances

Monad (Proxy *) 

Methods

(>>=) :: Proxy * a -> (a -> Proxy * b) -> Proxy * b #

(>>) :: Proxy * a -> Proxy * b -> Proxy * b #

return :: a -> Proxy * a #

fail :: String -> Proxy * a #

Functor (Proxy *) 

Methods

fmap :: (a -> b) -> Proxy * a -> Proxy * b #

(<$) :: a -> Proxy * b -> Proxy * a #

Applicative (Proxy *) 

Methods

pure :: a -> Proxy * a #

(<*>) :: Proxy * (a -> b) -> Proxy * a -> Proxy * b #

(*>) :: Proxy * a -> Proxy * b -> Proxy * b #

(<*) :: Proxy * a -> Proxy * b -> Proxy * a #

Alternative (Proxy *) 

Methods

empty :: Proxy * a #

(<|>) :: Proxy * a -> Proxy * a -> Proxy * a #

some :: Proxy * a -> Proxy * [a] #

many :: Proxy * a -> Proxy * [a] #

MonadPlus (Proxy *) 

Methods

mzero :: Proxy * a #

mplus :: Proxy * a -> Proxy * a -> Proxy * a #

Bounded (Proxy k s) 

Methods

minBound :: Proxy k s #

maxBound :: Proxy k s #

Enum (Proxy k s) 

Methods

succ :: Proxy k s -> Proxy k s #

pred :: Proxy k s -> Proxy k s #

toEnum :: Int -> Proxy k s #

fromEnum :: Proxy k s -> Int #

enumFrom :: Proxy k s -> [Proxy k s] #

enumFromThen :: Proxy k s -> Proxy k s -> [Proxy k s] #

enumFromTo :: Proxy k s -> Proxy k s -> [Proxy k s] #

enumFromThenTo :: Proxy k s -> Proxy k s -> Proxy k s -> [Proxy k s] #

Eq (Proxy k s) 

Methods

(==) :: Proxy k s -> Proxy k s -> Bool #

(/=) :: Proxy k s -> Proxy k s -> Bool #

Ord (Proxy k s) 

Methods

compare :: Proxy k s -> Proxy k s -> Ordering #

(<) :: Proxy k s -> Proxy k s -> Bool #

(<=) :: Proxy k s -> Proxy k s -> Bool #

(>) :: Proxy k s -> Proxy k s -> Bool #

(>=) :: Proxy k s -> Proxy k s -> Bool #

max :: Proxy k s -> Proxy k s -> Proxy k s #

min :: Proxy k s -> Proxy k s -> Proxy k s #

Read (Proxy k s) 
Show (Proxy k s) 

Methods

showsPrec :: Int -> Proxy k s -> ShowS #

show :: Proxy k s -> String #

showList :: [Proxy k s] -> ShowS #

Ix (Proxy k s) 

Methods

range :: (Proxy k s, Proxy k s) -> [Proxy k s] #

index :: (Proxy k s, Proxy k s) -> Proxy k s -> Int #

unsafeIndex :: (Proxy k s, Proxy k s) -> Proxy k s -> Int

inRange :: (Proxy k s, Proxy k s) -> Proxy k s -> Bool #

rangeSize :: (Proxy k s, Proxy k s) -> Int #

unsafeRangeSize :: (Proxy k s, Proxy k s) -> Int

Monoid (Proxy k s) 

Methods

mempty :: Proxy k s #

mappend :: Proxy k s -> Proxy k s -> Proxy k s #

mconcat :: [Proxy k s] -> Proxy k s #

aUnit :: Proxy () #

() proxy value.

aChar :: Proxy Char #

Char proxy value.

anInt :: Proxy Int #

Int proxy value.

anInt8 :: Proxy Int8 #

Int8 proxy value.

anInt16 :: Proxy Int16 #

Int16 proxy value.

anInt32 :: Proxy Int32 #

Int32 proxy value.

anInt64 :: Proxy Int64 #

Int64 proxy value.

aWord :: Proxy Word #

Word proxy value.

aWord8 :: Proxy Word8 #

Word8 proxy value.

aWord16 :: Proxy Word16 #

Word16 proxy value.

aWord32 :: Proxy Word32 #

Word32 proxy value.

aWord64 :: Proxy Word64 #

Word64 proxy value.

aRatio :: Proxy Ratio #

Ratio proxy value.

aRatioOf :: Proxy α -> Proxy (Ratio α) #

Ratio α proxy value.

aFixed :: Proxy Fixed #

Fixed proxy value.

aFixedOf :: Proxy α -> Proxy (Fixed α) #

Fixed α proxy value.

aUni :: Proxy Uni #

Uni proxy value.

aDeci :: Proxy Deci #

Deci proxy value.

aCenti :: Proxy Centi #

Centi proxy value.

aMilli :: Proxy Milli #

Milli proxy value.

aMicro :: Proxy Micro #

Micro proxy value.

aNano :: Proxy Nano #

Nano proxy value.

aPico :: Proxy Pico #

Pico proxy value.

aFloat :: Proxy Float #

Float proxy value.

aDouble :: Proxy Double #

Double proxy value.

aMaybe :: Proxy Maybe #

Maybe proxy value.

aMaybeOf :: Proxy α -> Proxy (Maybe α) #

Maybe α proxy value.

aPair :: Proxy (,) #

Pair proxy value.

aPairOf :: Proxy α -> Proxy β -> Proxy (α, β) #

(α, β) proxy value.

aTriple :: Proxy (,,) #

Triple proxy value.

aTripleOf :: Proxy α -> Proxy β -> Proxy γ -> Proxy (α, β, γ) #

(α, β, γ) proxy value.

anEither :: Proxy Either #

Either proxy value.

anEitherOf :: Proxy α -> Proxy β -> Proxy (Either α β) #

Either α β proxy value.

aList :: Proxy [] #

List proxy value.

aListOf :: Proxy α -> Proxy [α] #

List of α proxy value.

anIo :: Proxy IO #

IO proxy value.

anIoOf :: Proxy α -> Proxy (IO α) #

IO α proxy value.

anIoRef :: Proxy IORef #

IORef proxy value.

anIoRefOf :: Proxy α -> Proxy (IORef α) #

IORef α proxy value.

anSt :: Proxy ST #

ST proxy value.

anStOf :: Proxy α -> Proxy (ST α) #

ST α proxy value.

anStRef :: Proxy STRef #

STRef proxy value.

anStRefOf :: Proxy α -> Proxy (STRef α) #

STRef α proxy value.