The source code of this package compiles a program called mini, a
type inference engine for the Mini language.
A basic usage of mini is to provide a source file as input. Let's
foo.ml be this file:
let id x = x
# mini foo.ml
returns
val id: forall a. a -> a
The documentation of the module MiniAst explains the concrete
syntax of the Mini language. The "tests" directory contains examples of
valid Mini programs.
| UnionFind |
This module implements a simple and efficient union/find algorithm.
|
| BasicSetEquations |
This module provides a solver for equations involving set constants,
variables, and disjoint sums (i.e.
|
| CoreAlgebra |
This module implements a core algebra of first order terms.
|
| MultiEquation |
This module implements a data structure for multi-equations.
|
| Constraint |
This module manages a data structure for constraint in a multi-equation
framework.
|
| Unifier |
This module implements unification of (ranked) multi-equations
over a row algebra, that is, an algebra obtained by extending a
free algebra
A with rows (see module CoreAlgebra).
|
| Solver |
This module provides a constraint solver based on unification
under a mixed prefix.
|
This module provides a simple pretty-printer for the terms
maintained by a unifier.
|
| MiniSyntacticAnalysis |
This module provides a parser for program and a parser for constraint.
|
| MiniAst |
The abstract syntax of MiniML programs.
|
| MiniAlgebra |
This module provides the type algebra for the Mini language.
|
| MiniTypingExceptions |
This modules declares the exceptions raised by the type inference engine.
|
| MiniInfer |
This module expresses the problem of type inference for MiniML
programs to the problem of constraint solving by a transformation
of program into typing constraints.
|
| MiniSolver |
This module provides a constraint solver based on unification
under a mixed prefix.
|
| AstPositions |
This module provides shortcuts for AST position handling.
|
| MiniPrettyPrinter |
This modules instanciates
PrettyPrinter for the Mini language.
|
| Misc |
This module contains miscellaneous utilities.
|
| Processing |
A simple task manager.
|
| Errors | handle f runs f and exits with exit status 0.
|
| Positions |
Extension of standard library's positions.
|
| PrettyPrinter |
This module provides a common formatting interface to
pretty-print in LaTeX, raw text or module Format mode.
|
| InfiniteArray |
This module implements infinite arrays.
|
| Mark |
This module implements a very simple notion of ``mark''.
|
| IntRank |
This module describes an ordered type
t equipped with a
distinguished constant none.
|
Decompress the distributed package. In the newly created folder, do:
# ./configure
This should check if you have the necessary tools to compile mini.
Then, you just have to launch the compilation using:
# make
To generate this documentation, type the following command:
# make doc
Do not hesitate to contact us if the compilation process fails.
By default, mini processes the following tasks:
The following tasks are optional:
The options of mini enable the use of these optional tasks:
usage: ./mini [options] filename --start taskname Task to begin with --end taskname Task to end with --trace-all Trace --do taskname Do a task --trace-solve-constraint Trace solve-constraint --trace-print-program Trace print-program --trace-generate-constraint Trace generate-constraint --trace-print-constraint Trace print-constraint --trace-parse-program Trace parse-program --trace-print-env Trace print-env --trace-parse-constraint Trace parse-constraint -help Display this list of options --help Display this list of options