Module Common

module Fixed : sig ... end

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

module Foldable : sig ... end

This module follows the Jane Street organisation and naming conventions for 'standard interfaces' i.e. commonly used signatures; briefly:

module Gensym : sig ... end

Generate fresh (never before used) symbols.

module ICE : sig ... end

Internal compiler errors

module Let_syntax : sig ... end

See https://ocaml.org/manual/5.2/bindingops.html#ss%3Aletops-conventions This is an alternative to the let%bind and let%map syntax from ppx_let: https://blog.janestreet.com/let-syntax-and-why-you-should-use-it/

module Pattern : sig ... end

A Pattern defines the signature of modules that may be fixed with Fixed.Make and Fixed.Make2.

module Pretty : sig ... end

Named signatures for types that can be pretty-printed.

module Specialized : sig ... end

This module defines signature and functors used to 'specialize' a fixed-point type that is polymorphic in the type of meta-data to a particular type of meta-data.