futhark-0.11.0: An optimising compiler for a functional, array-oriented language.

Safe HaskellNone
LanguageHaskell2010

Language.Futhark.TypeChecker

Description

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

Documentation

checkProg :: Imports -> VNameSource -> ImportName -> UncheckedProg -> Either TypeError (FileModule, Warnings, 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 checker results. The FilePath is used to resolve relative imports.

checkExp :: Imports -> VNameSource -> Env -> UncheckedExp -> 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 -> 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 -> 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.

data TypeError Source #

Information about an error during type checking. The Show instance for this type produces a human-readable description.

data Warnings Source #

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.