-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Libraries for processing GHC Core -- -- Libraries for processing GHC Core @package extcore @version 0.5 module Language.Core.Encoding type UserString = String type EncodedString = String zEncodeString :: UserString -> EncodedString unencodedChar :: Char -> Bool encode_ch :: Char -> EncodedString zDecodeString :: EncodedString -> UserString decode_lower :: Char -> Char decode_upper :: Char -> Char decode_num_esc :: Char -> EncodedString -> UserString decode_tuple :: Char -> EncodedString -> UserString maybe_tuple :: UserString -> Maybe EncodedString count_commas :: Int -> String -> (Int, String) module Language.Core.Env data Env a b eempty :: Env a b elookup :: (Eq a, Ord a) => Env a b -> a -> Maybe b eextend :: (Ord a) => Env a b -> (a, b) -> Env a b edomain :: (Eq a) => Env a b -> [a] efromlist :: (Ord a) => [(a, b)] -> Env a b etolist :: Env a b -> [(a, b)] efilter :: (Ord a) => Env a b -> (a -> Bool) -> Env a b eremove :: (Eq a, Ord a) => Env a b -> a -> Env a b instance (Show a, Show b) => Show (Env a b) module Language.Core.Core data Module Module :: AnMname -> [Tdef] -> [Vdefg] -> Module data Tdef Data :: (Qual Tcon) -> [Tbind] -> [Cdef] -> Tdef Newtype :: (Qual Tcon) -> (Qual Tcon) -> [Tbind] -> Ty -> Tdef data Cdef Constr :: (Qual Dcon) -> [Tbind] -> [Ty] -> Cdef data Vdefg Rec :: [Vdef] -> Vdefg Nonrec :: Vdef -> Vdefg newtype Vdef Vdef :: (Qual Var, Ty, Exp) -> Vdef data Exp Var :: (Qual Var) -> Exp Dcon :: (Qual Dcon) -> Exp Lit :: Lit -> Exp App :: Exp -> Exp -> Exp Appt :: Exp -> Ty -> Exp Lam :: Bind -> Exp -> Exp Let :: Vdefg -> Exp -> Exp Case :: Exp -> Vbind -> Ty -> [Alt] -> Exp Cast :: Exp -> Ty -> Exp Note :: String -> Exp -> Exp External :: String -> Ty -> Exp data Bind Vb :: Vbind -> Bind Tb :: Tbind -> Bind data Alt Acon :: (Qual Dcon) -> [Tbind] -> [Vbind] -> Exp -> Alt Alit :: Lit -> Exp -> Alt Adefault :: Exp -> Alt type Vbind = (Var, Ty) type Tbind = (Tvar, Kind) data Ty Tvar :: Tvar -> Ty Tcon :: (Qual Tcon) -> Ty Tapp :: Ty -> Ty -> Ty Tforall :: Tbind -> Ty -> Ty TransCoercion :: Ty -> Ty -> Ty SymCoercion :: Ty -> Ty UnsafeCoercion :: Ty -> Ty -> Ty InstCoercion :: Ty -> Ty -> Ty LeftCoercion :: Ty -> Ty RightCoercion :: Ty -> Ty data Kind Klifted :: Kind Kunlifted :: Kind Kopen :: Kind Karrow :: Kind -> Kind -> Kind Keq :: Ty -> Ty -> Kind data CoercionKind DefinedCoercion :: [Tbind] -> (Ty, Ty) -> CoercionKind data KindOrCoercion Kind :: Kind -> KindOrCoercion Coercion :: CoercionKind -> KindOrCoercion data Lit Literal :: CoreLit -> Ty -> Lit data CoreLit Lint :: Integer -> CoreLit Lrational :: Rational -> CoreLit Lchar :: Char -> CoreLit Lstring :: String -> CoreLit type Mname = Maybe AnMname newtype AnMname M :: (Pname, [Id], Id) -> AnMname newtype Pname P :: Id -> Pname type Var = Id type Tvar = Id type Tcon = Id type Dcon = Id type Qual t = (Mname, t) qual :: AnMname -> t -> Qual t unqual :: t -> Qual t getModule :: Qual t -> Mname type Id = String eqKind :: Kind -> Kind -> Bool splitTyConApp_maybe :: Ty -> Maybe (Qual Tcon, [Ty]) equalTy :: Ty -> Ty -> Bool subKindOf :: Kind -> Kind -> Bool baseKind :: Kind -> Bool mkPrimMname :: Id -> AnMname mkBaseMname :: Id -> AnMname dcTrue :: Dcon dcFalse :: Dcon tcArrow :: Qual Tcon tArrow :: Ty -> Ty -> Ty mkFunTy :: Ty -> Ty -> Ty ktArrow :: Kind maxUtuple :: Int tcUtuple :: Int -> Qual Tcon ktUtuple :: Int -> Kind tUtuple :: [Ty] -> Ty isUtupleTy :: Ty -> Bool dcUtuple :: Int -> Qual Dcon isUtupleDc :: Qual Dcon -> Bool dcUtupleTy :: Int -> Ty utuple :: [Ty] -> [Exp] -> Exp flattenBinds :: [Vdefg] -> [Vdef] unitMname :: AnMname instance Typeable Pname instance Typeable AnMname instance Typeable CoreLit instance Typeable Lit instance Typeable Kind instance Typeable Ty instance Typeable Alt instance Typeable Bind instance Typeable Exp instance Typeable Vdef instance Typeable Vdefg instance Typeable Cdef instance Typeable Tdef instance Typeable Module instance Eq Pname instance Ord Pname instance Data Pname instance Eq AnMname instance Ord AnMname instance Data AnMname instance Data CoreLit instance Eq CoreLit instance Data Lit instance Eq Lit instance Data Kind instance Data Ty instance Data Alt instance Data Bind instance Data Exp instance Data Vdef instance Data Vdefg instance Data Cdef instance Data Tdef instance Data Module instance Eq Ty module Language.Core.Printer escape :: String -> String instance Show AnMname instance Show KindOrCoercion instance Show CoreLit instance Show Lit instance Show CoercionKind instance Show Kind instance Show Ty instance Show Alt instance Show Exp instance Show Vdef instance Show Vdefg instance Show Cdef instance Show Tdef instance Show Module module Language.Core.CoreUtils splitDataConApp_maybe :: Exp -> Maybe (Qual Dcon, [Ty], [Exp]) splitApp :: Exp -> (Exp, [Exp]) splitAppIgnoreCasts :: Exp -> (Exp, [Exp]) splitFunTy_maybe :: Ty -> Maybe ([Ty], Ty) splitFunTy2_maybe :: Ty -> Maybe (Ty, Ty) vdefNamesQ :: [Vdef] -> [Qual Var] vdefNames :: [Vdef] -> [Var] vdefTys :: [Vdef] -> [Ty] vdefgNames :: Vdefg -> [Var] vdefgNamesQ :: Vdefg -> [Qual Var] vdefgTys :: Vdefg -> [Ty] vdefgBodies :: Vdefg -> [Exp] vbNames :: [Vbind] -> [Var] substIn :: (Data a) => Var -> Var -> a -> a substVars :: (Data a) => [Var] -> [Var] -> a -> a tdefNames :: [Tdef] -> [Qual Var] tdefDcons :: [Tdef] -> [Qual Var] tdefTcons :: [Tdef] -> [Qual Var] filterVdefgs :: (Vdef -> Bool) -> [Vdefg] -> [Vdefg] applyNewtype :: CoercionKind -> [Ty] -> (Ty, Ty) substl :: [Tvar] -> [Ty] -> Ty -> Ty freeTvars :: Ty -> [Tvar] freshTvar :: [Tvar] -> Tvar splitLambda :: Exp -> ([Bind], Exp) vbinds :: [Bind] -> [(Var, Ty)] splitBinds :: [Bind] -> ([(Tvar, Kind)], [(Var, Ty)]) freeVars :: Exp -> [Qual Var] freeVarss :: [Exp] -> [Qual Var] module Language.Core.Interp evalProgram :: [Module] -> IO Value instance Show Heap instance Eq PrimValue instance Show PrimValue instance Show Value instance Show HeapValue instance Error Value module Language.Core.Merge merge :: [(Qual Var, Qual Var)] -> [Module] -> Module uniqueNamesIn :: [Vdefg] -> [Tdef] -> [Qual Var] nonUniqueNamesIn :: [Vdef] -> [Tdef] -> [Qual Var] module Language.Core.ElimDeadCode elimDeadCode :: Bool -> Module -> Module module Language.Core.Check checkModule :: Menv -> Module -> CheckRes Menv envsModule :: Menv -> Module -> Menv checkExpr :: AnMname -> Menv -> Tcenv -> Cenv -> Venv -> Tvenv -> Exp -> Ty checkType :: AnMname -> Menv -> Tcenv -> Tvenv -> Ty -> Kind primCoercionError :: (Show a) => a -> b type Menv = Env AnMname Envs type Venv = Env Var Ty type Tvenv = Env Tvar Kind type Tcenv = Env Tcon KindOrCoercion data Envs Envs :: Tcenv -> Cenv -> Venv -> Envs tcenv_ :: Envs -> Tcenv cenv_ :: Envs -> Cenv venv_ :: Envs -> Venv data CheckRes a OkC :: a -> CheckRes a FailC :: String -> CheckRes a splitTy :: Ty -> ([Tbind], [Ty], Ty) substl :: [Tvar] -> [Ty] -> Ty -> Ty mkTypeEnvsNoChecking :: [Tdef] -> (Tcenv, Cenv) type NtEnv = Map Tcon CoercionKind mkNtEnv :: Menv -> NtEnv instance Monad CheckRes module Language.Core.ParsecParser parseCore :: FilePath -> IO (Either ParseError Module) coreModuleName :: Parser AnMname coreTcon :: Parser ATyOp coreQualifiedGen :: Parser String -> Parser (Mname, Id) upperName :: Parser Id identifier :: ParsecT String u Identity String coreType :: Parser Ty coreKind :: Parser Kind coreTbinds :: Parser [Tbind] parens :: ParsecT String u Identity a -> ParsecT String u Identity a braces :: ParsecT String u Identity a -> ParsecT String u Identity a topVbind :: Parser (Qual Var, Ty) module Language.Core.Prep prepModule :: Menv -> Module -> Module boundVars :: Exp -> [Id] boundVarsVdefs :: Vdefg -> [Id] boundVarsVdef :: Vdef -> [Id] boundVarsAlts :: [Alt] -> [Var] boundVarsAlt :: Alt -> [Var] substNewtys :: NtEnv -> Ty -> Ty newtypeCoercion_maybe :: NtEnv -> Ty -> Maybe CoercionKind mkTapp :: Ty -> [Ty] -> Ty initCounter :: Int type PrepM = State Int freshVar :: PrepM String module Language.Core.Prims initialEnv :: Menv primEnv :: Envs primId :: String -> Qual Id tIntzh :: Ty tInt64zh :: Ty tCharzh :: Ty tFloatzh :: Ty tAddrzh :: Ty tDoublezh :: Ty tcStatezh :: Qual Tcon tWordzh :: Ty tWord64zh :: Ty tByteArrayzh :: Ty tcStablePtrzh :: Qual Tcon tcIO :: Qual Tcon mkInitialEnv :: [Module] -> IO Menv mkTypeEnv :: Menv -> Module -> IO Menv tRWS :: Ty tBool :: Ty tcBool :: Qual Tcon ioBaseMname :: AnMname