futhark-0.20.0: An optimising compiler for a functional, array-oriented language.
Safe HaskellSafe-Inferred
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 -> (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 imports.

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.

data TypeError Source #

Information about an error during type checking.

Instances

Instances details
Pretty TypeError Source # 
Instance details

Defined in Language.Futhark.TypeChecker.Monad

Methods

ppr :: TypeError -> Doc #

pprPrec :: Int -> TypeError -> Doc #

pprList :: [TypeError] -> Doc #

MonadError TypeError TypeM Source # 
Instance details

Defined in Language.Futhark.TypeChecker.Monad

Methods

throwError :: TypeError -> TypeM a #

catchError :: TypeM a -> (TypeError -> TypeM a) -> TypeM a #

data Warnings Source #

The warnings produced by the compiler. The Show instance produces a human-readable description.

Instances

Instances details
Semigroup Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Monoid Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Pretty Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Methods

ppr :: Warnings -> Doc #

pprPrec :: Int -> Warnings -> Doc #

pprList :: [Warnings] -> Doc #

initialEnv :: Env Source #

An initial environment for the type checker, containing intrinsics and such.