Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
The type checker checks whether the program is type-consistent and adds type annotations and various other elaborations. The program does not need to have any particular properties for the type checker to function; in particular it does not need unique names.
Synopsis
- checkProg :: Imports -> VNameSource -> ImportName -> UncheckedProg -> (Warnings, Either TypeError (FileModule, VNameSource))
- checkExp :: Imports -> VNameSource -> Env -> UncheckedExp -> (Warnings, Either TypeError ([TypeParam], Exp))
- checkDec :: Imports -> VNameSource -> Env -> ImportName -> UncheckedDec -> (Warnings, Either TypeError (Env, Dec, VNameSource))
- checkModExp :: Imports -> VNameSource -> Env -> ModExpBase NoInfo Name -> (Warnings, Either TypeError (MTy, ModExpBase Info VName))
- data TypeError
- data Warnings
- initialEnv :: Env
Documentation
checkProg :: Imports -> VNameSource -> ImportName -> UncheckedProg -> (Warnings, Either TypeError (FileModule, VNameSource)) Source #
Type check a program containing no type information, yielding
either a type error or a program with complete type information.
Accepts a mapping from file names (excluding extension) to
previously type checked results. The ImportName
is used to resolve
relative import
s.
checkExp :: Imports -> VNameSource -> Env -> UncheckedExp -> (Warnings, Either TypeError ([TypeParam], Exp)) Source #
Type check a single expression containing no type information,
yielding either a type error or the same expression annotated with
type information. Also returns a list of type parameters, which
will be nonempty if the expression is polymorphic. See also
checkProg
.
checkDec :: Imports -> VNameSource -> Env -> ImportName -> UncheckedDec -> (Warnings, Either TypeError (Env, Dec, VNameSource)) Source #
Type check a single declaration containing no type information,
yielding either a type error or the same declaration annotated with
type information along the Env produced by that declaration. See
also checkProg
.
checkModExp :: Imports -> VNameSource -> Env -> ModExpBase NoInfo Name -> (Warnings, Either TypeError (MTy, ModExpBase Info VName)) Source #
Type check a single module expression containing no type information,
yielding either a type error or the same expression annotated with
type information along the Env produced by that declaration. See
also checkProg
.
Information about an error during type checking.
Instances
Pretty TypeError Source # | |
MonadError TypeError TypeM Source # | |
Defined in Language.Futhark.TypeChecker.Monad throwError :: TypeError -> TypeM a # catchError :: TypeM a -> (TypeError -> TypeM a) -> TypeM a # |
The warnings produced by the compiler. The Show
instance
produces a human-readable description.
initialEnv :: Env Source #
An initial environment for the type checker, containing intrinsics and such.