| Safe Haskell | None | 
|---|
Literal
Contents
- data Literal
- mkMachInt :: Integer -> Literal
- mkMachWord :: Integer -> Literal
- mkMachInt64 :: Integer -> Literal
- mkMachWord64 :: Integer -> Literal
- mkMachFloat :: Rational -> Literal
- mkMachDouble :: Rational -> Literal
- mkMachChar :: Char -> Literal
- mkMachString :: String -> Literal
- mkLitInteger :: Integer -> Type -> Literal
- literalType :: Literal -> Type
- hashLiteral :: Literal -> Int
- absentLiteralOf :: TyCon -> Maybe Literal
- pprLiteral :: (SDoc -> SDoc) -> Literal -> SDoc
- litIsDupable :: Literal -> Bool
- litIsTrivial :: Literal -> Bool
- litIsLifted :: Literal -> Bool
- inIntRange :: Integer -> Bool
- inWordRange :: Integer -> Bool
- tARGET_MAX_INT :: Integer
- inCharRange :: Char -> Bool
- isZeroLit :: Literal -> Bool
- litFitsInChar :: Literal -> Bool
- word2IntLit :: Literal -> Literal
- int2WordLit :: Literal -> Literal
- narrow8IntLit :: Literal -> Literal
- narrow16IntLit :: Literal -> Literal
- narrow32IntLit :: Literal -> Literal
- narrow8WordLit :: Literal -> Literal
- narrow16WordLit :: Literal -> Literal
- narrow32WordLit :: Literal -> Literal
- char2IntLit :: Literal -> Literal
- int2CharLit :: Literal -> Literal
- float2IntLit :: Literal -> Literal
- int2FloatLit :: Literal -> Literal
- double2IntLit :: Literal -> Literal
- int2DoubleLit :: Literal -> Literal
- nullAddrLit :: Literal
- float2DoubleLit :: Literal -> Literal
- double2FloatLit :: Literal -> Literal
Main data type
data Literal
So-called Literals are one of:
Constructors
| MachChar Char | 
 | 
| MachStr FastString | A string-literal: stored and emitted
 UTF-8 encoded, we'll arrange to decode it
 at runtime.  Also emitted with a  | 
| MachNullAddr | The  | 
| MachInt Integer | 
 | 
| MachInt64 Integer | 
 | 
| MachWord Integer | 
 | 
| MachWord64 Integer | 
 | 
| MachFloat Rational | 
 | 
| MachDouble Rational | 
 | 
| MachLabel FastString (Maybe Int) FunctionOrData | A label literal. Parameters: 1) The name of the symbol mentioned in the declaration 2) The size (in bytes) of the arguments
    the label expects. Only applicable with
     | 
| LitInteger Integer Type | 
Creating Literals
mkMachWord :: Integer -> Literal
Creates a Literal of type Word#
mkMachInt64 :: Integer -> Literal
Creates a Literal of type Int64#
mkMachWord64 :: Integer -> Literal
Creates a Literal of type Word64#
mkMachFloat :: Rational -> Literal
Creates a Literal of type Float#
mkMachDouble :: Rational -> Literal
Creates a Literal of type Double#
mkMachChar :: Char -> Literal
Creates a Literal of type Char#
mkMachString :: String -> Literal
Creates a Literal of type Addr#, which is appropriate for passing to
 e.g. some of the "error" functions in GHC.Err such as GHC.Err.runtimeError
mkLitInteger :: Integer -> Type -> Literal
Operations on Literals
literalType :: Literal -> Type
Find the Haskell Type the literal occupies
hashLiteral :: Literal -> Int
absentLiteralOf :: TyCon -> Maybe Literal
pprLiteral :: (SDoc -> SDoc) -> Literal -> SDoc
Predicates on Literals and their contents
litIsDupable :: Literal -> Bool
True if code space does not go bad if we duplicate this literal
 Currently we treat it just like litIsTrivial
litIsTrivial :: Literal -> Bool
True if there is absolutely no penalty to duplicating the literal. False principally of strings
litIsLifted :: Literal -> Bool
inIntRange :: Integer -> Bool
inWordRange :: Integer -> Bool
inCharRange :: Char -> Bool
litFitsInChar :: Literal -> Bool
Coercions
word2IntLit :: Literal -> Literal
int2WordLit :: Literal -> Literal
narrow8IntLit :: Literal -> Literal
narrow16IntLit :: Literal -> Literal
narrow32IntLit :: Literal -> Literal
narrow8WordLit :: Literal -> Literal
narrow16WordLit :: Literal -> Literal
narrow32WordLit :: Literal -> Literal
char2IntLit :: Literal -> Literal
int2CharLit :: Literal -> Literal
float2IntLit :: Literal -> Literal
int2FloatLit :: Literal -> Literal
double2IntLit :: Literal -> Literal
int2DoubleLit :: Literal -> Literal
float2DoubleLit :: Literal -> Literal
double2FloatLit :: Literal -> Literal