Module Common.Fixed

This module defines the signatures and Make functors for the 'fixed point' (or two-level) type we use for our intermediate representations

module type S = sig ... end

The fixed-point of Pattern.t annotated with some meta-data

module Make (Pattern : Pattern.S) : S with module Pattern := Pattern

Functor which creates the fixed-point of the type defined in the Pattern module argument

module type S2 = sig ... end

Nested fixed-point type where an element of the Pattern is itself a fixed-point type. We use this to represent statements which contain expressions.

module Make2 (First : S) (Pattern : Pattern.S2) : S2 with module First := First and module Pattern := Pattern