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

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
Eq Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Show Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Semigroup Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

Monoid Warnings Source # 
Instance details

Defined in Language.Futhark.Warnings

MonadWriter Warnings TypeM Source # 
Instance details

Defined in Language.Futhark.TypeChecker.Monad

Methods

writer :: (a, Warnings) -> TypeM a #

tell :: Warnings -> TypeM () #

listen :: TypeM a -> TypeM (a, Warnings) #

pass :: TypeM (a, Warnings -> Warnings) -> TypeM a #

initialEnv :: Env Source #

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