cryptol-2.2.5: Cryptol: The Language of Cryptography

Copyright(c) 2013-2015 Galois, Inc.
LicenseBSD3
Maintainercryptol@galois.com
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell98

Cryptol.ModuleSystem

Contents

Description

 

Synopsis

Module System

data DynamicEnv Source

Extra information we need to carry around to dynamically extend an environment outside the context of a single module. Particularly useful when dealing with interactive declarations as in :let or it.

Constructors

DEnv 

data ModuleError Source

Constructors

ModuleNotFound ModName [FilePath]

Unable to find the module given, tried looking in these paths

CantFindFile FilePath

Unable to open a file

OtherIOError FilePath IOException

Some other IO error occurred while reading this file

ModuleParseError FilePath ParseError

Generated this parse error when parsing the file for module m

RecursiveModules [ImportSource]

Recursive module group discovered

RenamerErrors ImportSource [RenamerError]

Problems during the renaming phase

NoPatErrors ImportSource [Error]

Problems during the NoPat phase

NoIncludeErrors ImportSource [IncludeError]

Problems during the NoInclude phase

TypeCheckingFailed ImportSource [(Range, Error)]

Problems during type checking

OtherFailure String

Problems after type checking, eg. specialization

ModuleNameMismatch ModName (Located ModName)

Module loaded by 'import' statement has the wrong module name

DuplicateModuleName ModName FilePath FilePath

Two modules loaded from different files have the same module name

findModule :: ModName -> ModuleCmd FilePath Source

Find the file associated with a module name in the module search path.

loadModuleByPath :: FilePath -> ModuleCmd Module Source

Load the module contained in the given file.

loadModule :: FilePath -> Module -> ModuleCmd Module Source

Load the given parsed module.

checkExpr :: Expr -> ModuleCmd (Expr, Schema) Source

Check the type of an expression.

evalExpr :: Expr -> ModuleCmd Value Source

Evaluate an expression.

checkDecls :: (HasLoc d, Rename d, FromDecl d) => [d] -> ModuleCmd [DeclGroup] Source

Typecheck declarations.

evalDecls :: [DeclGroup] -> ModuleCmd () Source

Evaluate declarations and add them to the extended environment.

focusedEnv :: ModuleEnv -> IfaceDecls Source

Produce an ifaceDecls that represents the focused environment of the module system.

This could really do with some better error handling, just returning mempty when one of the imports fails isn't really desirable.

Interfaces

data Iface Source

The resulting interface generated by a module that has been typechecked.

Instances

Show Iface Source 
BindsNames Iface Source

Produce a naming environment from an interface file, that contains a mapping only from unqualified names to qualified ones.

data IfaceDecls Source

Instances

Show IfaceDecls Source 
Monoid IfaceDecls Source 
BindsNames IfaceDecls Source

Translate a set of declarations from an interface into a naming environment.

genIface :: Module -> Iface Source

Generate an Iface from a typechecked module.