Copyright | (c) 2015-2016 Galois Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Cryptol.ModuleSystem.Name
Description
Synopsis
- data Name
- data NameInfo
- data NameSource
- nameUnique :: Name -> Int
- nameIdent :: Name -> Ident
- nameInfo :: Name -> NameInfo
- nameLoc :: Name -> Range
- nameFixity :: Name -> Maybe Fixity
- asPrim :: Name -> Maybe Ident
- cmpNameLexical :: Name -> Name -> Ordering
- cmpNameDisplay :: NameDisp -> Name -> Name -> Ordering
- ppLocName :: Name -> Doc
- mkDeclared :: ModName -> NameSource -> Ident -> Maybe Fixity -> Range -> Supply -> (Name, Supply)
- mkParameter :: Ident -> Range -> Supply -> (Name, Supply)
- toParamInstName :: Name -> Name
- asParamName :: Name -> Name
- paramModRecParam :: Name
- class Monad m => FreshM m where
- liftSupply :: (Supply -> (a, Supply)) -> m a
- nextUniqueM :: FreshM m => m Int
- data SupplyT m a
- runSupplyT :: Monad m => Supply -> SupplyT m a -> m (a, Supply)
- data Supply
- emptySupply :: Supply
- nextUnique :: Supply -> (Int, Supply)
- data PrimMap = PrimMap {}
- lookupPrimDecl :: Ident -> PrimMap -> Name
- lookupPrimType :: Ident -> PrimMap -> Name
Names
Instances
Eq Name Source # | |
Ord Name Source # | |
Show Name Source # | |
Generic Name Source # | |
NFData Name Source # | |
Defined in Cryptol.ModuleSystem.Name | |
PPName Name Source # | |
Defined in Cryptol.ModuleSystem.Name Methods ppNameFixity :: Name -> Maybe (Assoc, Int) Source # ppPrefixName :: Name -> Doc Source # ppInfixName :: Name -> Doc Source # | |
PP Name Source # | |
ShowParseable Name Source # | |
Defined in Cryptol.TypeCheck.Parseable Methods showParseable :: Name -> Doc Source # | |
FromDecl (Decl Name) Source # | |
Defined in Cryptol.TypeCheck.Depends | |
FromDecl (TopDecl Name) Source # | |
Defined in Cryptol.TypeCheck.Depends | |
type Rep Name Source # | |
Defined in Cryptol.ModuleSystem.Name type Rep Name = D1 ('MetaData "Name" "Cryptol.ModuleSystem.Name" "cryptol-2.8.0-8MjdO3NUDs4I9u4d2J06AM" 'False) (C1 ('MetaCons "Name" 'PrefixI 'True) ((S1 ('MetaSel ('Just "nUnique") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "nInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NameInfo)) :*: (S1 ('MetaSel ('Just "nIdent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Ident) :*: (S1 ('MetaSel ('Just "nFixity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Fixity)) :*: S1 ('MetaSel ('Just "nLoc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))) |
Information about the binding site of the name.
Constructors
Declared !ModName !NameSource | This name refers to a declaration from this module |
Parameter | This name is a parameter (function or type) |
Instances
Eq NameInfo Source # | |
Show NameInfo Source # | |
Generic NameInfo Source # | |
NFData NameInfo Source # | |
Defined in Cryptol.ModuleSystem.Name | |
type Rep NameInfo Source # | |
Defined in Cryptol.ModuleSystem.Name type Rep NameInfo = D1 ('MetaData "NameInfo" "Cryptol.ModuleSystem.Name" "cryptol-2.8.0-8MjdO3NUDs4I9u4d2J06AM" 'False) (C1 ('MetaCons "Declared" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NameSource)) :+: C1 ('MetaCons "Parameter" 'PrefixI 'False) (U1 :: Type -> Type)) |
data NameSource Source #
Constructors
SystemName | |
UserName |
Instances
Eq NameSource Source # | |
Defined in Cryptol.ModuleSystem.Name | |
Show NameSource Source # | |
Defined in Cryptol.ModuleSystem.Name Methods showsPrec :: Int -> NameSource -> ShowS show :: NameSource -> String showList :: [NameSource] -> ShowS | |
Generic NameSource Source # | |
Defined in Cryptol.ModuleSystem.Name Associated Types type Rep NameSource :: Type -> Type | |
NFData NameSource Source # | |
Defined in Cryptol.ModuleSystem.Name Methods rnf :: NameSource -> () | |
type Rep NameSource Source # | |
Defined in Cryptol.ModuleSystem.Name type Rep NameSource = D1 ('MetaData "NameSource" "Cryptol.ModuleSystem.Name" "cryptol-2.8.0-8MjdO3NUDs4I9u4d2J06AM" 'False) (C1 ('MetaCons "SystemName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UserName" 'PrefixI 'False) (U1 :: Type -> Type)) |
nameUnique :: Name -> Int Source #
nameFixity :: Name -> Maybe Fixity Source #
cmpNameLexical :: Name -> Name -> Ordering Source #
Compare two names lexically.
cmpNameDisplay :: NameDisp -> Name -> Name -> Ordering Source #
Compare two names by the way they would be displayed.
Creation
mkDeclared :: ModName -> NameSource -> Ident -> Maybe Fixity -> Range -> Supply -> (Name, Supply) Source #
Make a new name for a declaration.
toParamInstName :: Name -> Name Source #
asParamName :: Name -> Name Source #
Unique Supply
class Monad m => FreshM m where Source #
Methods
liftSupply :: (Supply -> (a, Supply)) -> m a Source #
Instances
FreshM RenameM Source # | |
Defined in Cryptol.ModuleSystem.Renamer | |
FreshM InferM Source # | |
Defined in Cryptol.TypeCheck.Monad | |
FreshM REPL Source # | |
Defined in Cryptol.REPL.Monad | |
Monad m => FreshM (SupplyT m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
Monad m => FreshM (ModuleT m) Source # | |
Defined in Cryptol.ModuleSystem.Monad | |
FreshM m => FreshM (ReaderT i m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
(Monoid i, FreshM m) => FreshM (WriterT i m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
FreshM m => FreshM (StateT i m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
FreshM m => FreshM (ExceptionT i m) Source # | |
Defined in Cryptol.ModuleSystem.Name Methods liftSupply :: (Supply -> (a, Supply)) -> ExceptionT i m a Source # |
nextUniqueM :: FreshM m => m Int Source #
Retrieve the next unique from the supply.
A monad for easing the use of the supply.
Instances
MonadT SupplyT Source # | |
Monad m => Monad (SupplyT m) Source # | |
Monad m => Functor (SupplyT m) Source # | |
MonadFix m => MonadFix (SupplyT m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
Monad m => Applicative (SupplyT m) Source # | |
Monad m => FreshM (SupplyT m) Source # | |
Defined in Cryptol.ModuleSystem.Name | |
BaseM m n => BaseM (SupplyT m) n Source # | |
Defined in Cryptol.ModuleSystem.Name | |
RunM m (a, Supply) r => RunM (SupplyT m) a (Supply -> r) Source # | |
Instances
Show Supply Source # | |
Generic Supply Source # | |
NFData Supply Source # | |
Defined in Cryptol.ModuleSystem.Name | |
RunM m (a, Supply) r => RunM (SupplyT m) a (Supply -> r) Source # | |
type Rep Supply Source # | |
Defined in Cryptol.ModuleSystem.Name type Rep Supply = D1 ('MetaData "Supply" "Cryptol.ModuleSystem.Name" "cryptol-2.8.0-8MjdO3NUDs4I9u4d2J06AM" 'False) (C1 ('MetaCons "Supply" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int))) |
emptySupply :: Supply Source #
This should only be used once at library initialization, and threaded through the rest of the session. The supply is started at 0x1000 to leave us plenty of room for names that the compiler needs to know about (wired-in constants).
nextUnique :: Supply -> (Int, Supply) Source #
PrimMap
A mapping from an identifier defined in some module to its real name.
Instances
Show PrimMap Source # | |
Generic PrimMap Source # | |
NFData PrimMap Source # | |
Defined in Cryptol.ModuleSystem.Name | |
type Rep PrimMap Source # | |
Defined in Cryptol.ModuleSystem.Name type Rep PrimMap = D1 ('MetaData "PrimMap" "Cryptol.ModuleSystem.Name" "cryptol-2.8.0-8MjdO3NUDs4I9u4d2J06AM" 'False) (C1 ('MetaCons "PrimMap" 'PrefixI 'True) (S1 ('MetaSel ('Just "primDecls") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Ident Name)) :*: S1 ('MetaSel ('Just "primTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Ident Name)))) |