Mezzo is a dialect of ML with effects control and a fine-grained type system.
| Mezzo |
This is the entry point of the program.
|
| Driver |
This module sets up a lexer and a parser to create an AST.
|
| TypeCore |
This module defines the syntax of types, as manipulated by the
type-checker.
|
| DeBruijn |
Dealing with binders.
|
| Types | |
| ExpressionsCore |
This module defines the syntax of expressions.
|
| Expressions |
This module defines substitution functions and binding functions on
expressions as well as data type groups.
|
| Merge |
This module implements the merge operation.
|
| Permissions |
This module provides permission manipulation functions.
|
| TypeChecker |
This is the top of the pyramid: the module that actually performs
type-checking.
|
| Derivations |
This file provides a representation of typing derivations, built by
Permissions.
|
| TypeErrors |
Everything you ever dreamed of for reporting errors.
|
| DerivationPrinter |
This module provide a convenient way to print a typing derivation into a
(supposedly) human-readable form.
|
| DataTypeFlavor | |
| Mode |
The four modes.
|
| Fact |
Conjunction of hypotheses.
|
| FactInference |
This module analyzes data type declarations to synthesize facts about
data types.
|
| Variance |
This module is entirely devoted to computing the variance of type parameters
in data types.
|
| Modules |
Find the dependencies of a module.
|
| Interfaces |
Treatment of interfaces.
|
| Exports |
Handling the names exported by interfaces and implementations.
|
| Hoist |
| SurfaceSyntax | |
| Grammar | |
| Lexer |
The lexer for Mezzo.
|
| ParserUtils | |
| Resugar |
This function converts an internal name to a possibly-qualified name
in the surface syntax.
|
| KindCheck |
This module implements a well-kindedness check for the types of the surface
language.
|
| TransSurface |
Translating the surface syntax down into the core language syntax.
|
| Identifier |
This functor creates a fresh abstract type of names.
|
| Mark | |
| Hashcons |
A simple Hashconsing facility.
|
| GMap | |
| GSet |
This is a stripped down version of
GSet that describes both Patricia
and CompressedBitSet.
|
| Patricia |
This is an implementation of Patricia trees, following Chris Okasaki's paper at the 1998 ML Workshop in Baltimore.
|
| InfiniteArray |
This module implements infinite arrays.
|
| PersistentUnionFind |
A persistent version of the classic union-find algorithm.
|
| PersistentRef |
This module implements a persistent store: in other words, it
is a purely functional implementation of references, with an
explicit store.
|
| Bash |
Provides wrappers for some bash fancy printing, mainly boxes and colors.
|
| MzList |
A bunch of useful functions for lists.
|
| MzMap |
Various missing functions from the
Map module.
|
| MzString |
Various string utilities.
|
| MzPprint | |
| Option |
No "J" prefix for this module since OCaml's standard library does not have
an
Option module.
|
| Log |
This module provides error reporting functions for Mezzo.
|
| Debug | |
| TestUtils | |
| Utils |