Safe Haskell | None |
---|---|
Language | Haskell2010 |
Low-level compilation parts. Look at Futhark.Compiler for a more high-level API.
Synopsis
- readLibrary :: (MonadError CompilerError m, MonadIO m) => [Name] -> [FilePath] -> m (Warnings, Imports, VNameSource)
- readUntypedLibrary :: (MonadIO m, MonadError CompilerError m) => [FilePath] -> m [(ImportName, UncheckedProg)]
- type Imports = [(String, FileModule)]
- data FileModule = FileModule {}
- data Warnings
- data LoadedProg
- noLoadedProg :: LoadedProg
- lpImports :: LoadedProg -> Imports
- reloadProg :: (MonadError CompilerError m, MonadIO m) => LoadedProg -> [FilePath] -> m (Warnings, LoadedProg)
- extendProg :: (MonadError CompilerError m, MonadIO m) => LoadedProg -> [FilePath] -> m (Warnings, LoadedProg)
Documentation
:: (MonadError CompilerError m, MonadIO m) | |
=> [Name] | Extra functions that should be marked as entry points; only applies to the immediate files, not any imports imported. |
-> [FilePath] | The files to read. |
-> m (Warnings, Imports, VNameSource) |
Read and type-check some Futhark files.
readUntypedLibrary :: (MonadIO m, MonadError CompilerError m) => [FilePath] -> m [(ImportName, UncheckedProg)] Source #
Read (and parse) all source files (including the builtin prelude) corresponding to a set of root files.
type Imports = [(String, FileModule)] Source #
A mapping from import names to imports. The ordering is significant.
data FileModule Source #
The result of type checking some file. Can be passed to further invocations of the type checker.
The warnings produced by the compiler. The Show
instance
produces a human-readable description.
data LoadedProg Source #
A loaded, type-checked program. This can be used to extract information about the program, but also to speed up subsequent reloads.
noLoadedProg :: LoadedProg Source #
A "loaded program" containing no actual files. Use this as a
starting point for reloadProg
lpImports :: LoadedProg -> Imports Source #
The Imports
of a LoadedProg
, as expected by e.g. type
checking functions.
reloadProg :: (MonadError CompilerError m, MonadIO m) => LoadedProg -> [FilePath] -> m (Warnings, LoadedProg) Source #
Load some new files, reusing as much of the previously loaded
program as possible. This does not *extend* the currently loaded
program the way extendProg
does it, so it is always correct (if
less efficient) to pass noLoadedProg
.
extendProg :: (MonadError CompilerError m, MonadIO m) => LoadedProg -> [FilePath] -> m (Warnings, LoadedProg) Source #
Extend a loaded program with (possibly new) files.