cryptol-3.1.0: Cryptol: The Language of Cryptography
Safe HaskellSafe-Inferred
LanguageHaskell2010

Cryptol.ModuleSystem.Binds

Synopsis

Documentation

class BindsNames a Source #

Things that define exported names.

Minimal complete definition

namingEnv

Instances

Instances details
BindsNames NamingEnv Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: NamingEnv -> BuildNamingEnv

BindsNames (InModule (Bind PName)) Source #

Introduce the name

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Bind PName) -> BuildNamingEnv

BindsNames (InModule (Decl PName)) Source #

The naming environment for a single declaration.

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Decl PName) -> BuildNamingEnv

BindsNames (InModule (EnumDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (EnumDecl PName) -> BuildNamingEnv

BindsNames (InModule (NestedModule PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (NestedModule PName) -> BuildNamingEnv

BindsNames (InModule (Newtype PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Newtype PName) -> BuildNamingEnv

BindsNames (InModule (ParameterFun PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (ParameterFun PName) -> BuildNamingEnv

BindsNames (InModule (ParameterType PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (ParameterType PName) -> BuildNamingEnv

BindsNames (InModule (PrimType PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (PrimType PName) -> BuildNamingEnv

BindsNames (InModule (SigDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (SigDecl PName) -> BuildNamingEnv

BindsNames (InModule (TopDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (TopDecl PName) -> BuildNamingEnv

BindsNames (Pattern PName) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: Pattern PName -> BuildNamingEnv

BindsNames (Schema PName) Source #

Generate a type renaming environment from the parameters that are bound by this schema.

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: Schema PName -> BuildNamingEnv

BindsNames (TParam PName) Source #

Generate the naming environment for a type parameter.

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: TParam PName -> BuildNamingEnv

BindsNames a => BindsNames (Maybe a) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: Maybe a -> BuildNamingEnv

BindsNames a => BindsNames [a] Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: [a] -> BuildNamingEnv

data Mod a Source #

Things defined by a module

Constructors

Mod 

Fields

Instances

Instances details
Functor Mod Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

fmap :: (a -> b) -> Mod a -> Mod b #

(<$) :: a -> Mod b -> Mod a #

data ModKind Source #

Constructors

AFunctor 
ASignature 
AModule 

Instances

Instances details
Generic ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

Associated Types

type Rep ModKind :: Type -> Type #

Methods

from :: ModKind -> Rep ModKind x #

to :: Rep ModKind x -> ModKind #

Show ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

PP ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

Methods

ppPrec :: Int -> ModKind -> Doc Source #

NFData ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

Methods

rnf :: ModKind -> () #

Eq ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

Methods

(==) :: ModKind -> ModKind -> Bool #

(/=) :: ModKind -> ModKind -> Bool #

Ord ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

type Rep ModKind Source # 
Instance details

Defined in Cryptol.ModuleSystem.Renamer.Error

type Rep ModKind = D1 ('MetaData "ModKind" "Cryptol.ModuleSystem.Renamer.Error" "cryptol-3.1.0-276efOa9Q2aIFSEzDdp2Mp" 'False) (C1 ('MetaCons "AFunctor" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ASignature" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AModule" 'PrefixI 'False) (U1 :: Type -> Type)))

modBuilder :: ModBuilder a -> Supply -> ((a, [RenamerError]), Supply) Source #

topDeclsDefs :: ModPath -> [TopDecl PName] -> ModBuilder (Mod ()) Source #

newModParam :: FreshM m => ModPath -> Ident -> Range -> Name -> m Name Source #

Given a name in a signature, make a name for the parameter corresponding to the signature.

newFunctorInst :: FreshM m => ModPath -> Name -> m Name Source #

Given a name in a functor, make a fresh name for the corresponding thing in the instantiation.

The DepName should be the instantiation not the functor.

data InModule a Source #

Do something in the context of a module. If Nothing than we are working with a local declaration. Otherwise we are at the top-level of the given module.

By wrapping types with this, we can pass the module path to methods that need the extra information.

Constructors

InModule (Maybe ModPath) a 

Instances

Instances details
Foldable InModule Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

fold :: Monoid m => InModule m -> m #

foldMap :: Monoid m => (a -> m) -> InModule a -> m #

foldMap' :: Monoid m => (a -> m) -> InModule a -> m #

foldr :: (a -> b -> b) -> b -> InModule a -> b #

foldr' :: (a -> b -> b) -> b -> InModule a -> b #

foldl :: (b -> a -> b) -> b -> InModule a -> b #

foldl' :: (b -> a -> b) -> b -> InModule a -> b #

foldr1 :: (a -> a -> a) -> InModule a -> a #

foldl1 :: (a -> a -> a) -> InModule a -> a #

toList :: InModule a -> [a] #

null :: InModule a -> Bool #

length :: InModule a -> Int #

elem :: Eq a => a -> InModule a -> Bool #

maximum :: Ord a => InModule a -> a #

minimum :: Ord a => InModule a -> a #

sum :: Num a => InModule a -> a #

product :: Num a => InModule a -> a #

Traversable InModule Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

traverse :: Applicative f => (a -> f b) -> InModule a -> f (InModule b) #

sequenceA :: Applicative f => InModule (f a) -> f (InModule a) #

mapM :: Monad m => (a -> m b) -> InModule a -> m (InModule b) #

sequence :: Monad m => InModule (m a) -> m (InModule a) #

Functor InModule Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

fmap :: (a -> b) -> InModule a -> InModule b #

(<$) :: a -> InModule b -> InModule a #

Show a => Show (InModule a) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

showsPrec :: Int -> InModule a -> ShowS #

show :: InModule a -> String #

showList :: [InModule a] -> ShowS #

BindsNames (InModule (Bind PName)) Source #

Introduce the name

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Bind PName) -> BuildNamingEnv

BindsNames (InModule (Decl PName)) Source #

The naming environment for a single declaration.

Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Decl PName) -> BuildNamingEnv

BindsNames (InModule (EnumDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (EnumDecl PName) -> BuildNamingEnv

BindsNames (InModule (NestedModule PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (NestedModule PName) -> BuildNamingEnv

BindsNames (InModule (Newtype PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (Newtype PName) -> BuildNamingEnv

BindsNames (InModule (ParameterFun PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (ParameterFun PName) -> BuildNamingEnv

BindsNames (InModule (ParameterType PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (ParameterType PName) -> BuildNamingEnv

BindsNames (InModule (PrimType PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (PrimType PName) -> BuildNamingEnv

BindsNames (InModule (SigDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (SigDecl PName) -> BuildNamingEnv

BindsNames (InModule (TopDecl PName)) Source # 
Instance details

Defined in Cryptol.ModuleSystem.Binds

Methods

namingEnv :: InModule (TopDecl PName) -> BuildNamingEnv

ifaceToMod :: IfaceG name -> Mod () Source #

Make a Mod from the public declarations in an interface. This is used to handle imports.

modToMap :: ImpName Name -> Mod () -> Map (ImpName Name) (Mod ()) -> Map (ImpName Name) (Mod ()) Source #

Generate a map from this module and all modules nested in it.

defsOf :: BindsNames a => a -> Supply -> (NamingEnv, Supply) Source #

Generate a NamingEnv using an explicit supply.