ghc-8.4.0.20171214: The GHC API

Safe HaskellNone
LanguageHaskell2010

Vectorise.Monad.Naming

Description

Computations in the vectorisation monad concerned with naming and fresh variable generation.

Synopsis

Documentation

mkLocalisedName :: (Maybe String -> OccName -> OccName) -> Name -> VM Name Source #

Create a localised variant of a name, using the provided function to transform its OccName.

If the name external, encode the original name's module into the new OccName. The result is always an internal system name.

mkVectId :: Id -> Type -> VM Id Source #

Produce the vectorised variant of an Id with the given vectorised type, while taking care that vectorised dfun ids must be dfuns again.

Force the new name to be a system name and, if the original was an external name, disambiguate the new name with the module name of the original.

cloneVar :: Var -> VM Var Source #

Make a fresh instance of this var, with a new unique.

newExportedVar :: OccName -> Type -> VM Var Source #

Make a fresh exported variable with the given type.

newLocalVar :: FastString -> Type -> VM Var Source #

Make a fresh local variable with the given type. The variable's name is formed using the given string as the prefix.

newLocalVars :: FastString -> [Type] -> VM [Var] Source #

Make several fresh local variables with the given types. The variable's names are formed using the given string as the prefix.

newDummyVar :: Type -> VM Var Source #

Make a new local dummy variable.

newTyVar :: FastString -> Kind -> VM Var Source #

Make a fresh type variable with the given kind. The variable's name is formed using the given string as the prefix.

newCoVar :: FastString -> Kind -> VM Var Source #

Make a fresh coercion variable with the given kind.