Module Shape

module Uid : sig ... end
module Sig_component_kind : sig ... end
module Item : sig ... end
type var = Ident.t
type t = {
  1. uid : Uid.t option;
  2. desc : desc;
}
and desc =
  1. | Var of var
  2. | Abs of var * t
  3. | App of t * t
  4. | Struct of t Item.Map.t
  5. | Leaf
  6. | Proj of t * Item.t
  7. | Comp_unit of string
val print : Stdlib.Format.formatter -> t -> unit
val for_unnamed_functor_param : var
val fresh_var : ?name:string -> Uid.t -> var * t
val var : Uid.t -> Ident.t -> t
val abs : ?uid:Uid.t -> var -> t -> t
val app : ?uid:Uid.t -> t -> arg:t -> t
val str : ?uid:Uid.t -> t Item.Map.t -> t
val proj : ?uid:Uid.t -> t -> Item.t -> t
val leaf : Uid.t -> t
val decompose_abs : t -> (var * t) option
val for_persistent_unit : string -> t
val leaf_for_unpack : t
module Map : sig ... end
val dummy_mod : t
val of_path : find_shape:(Sig_component_kind.t -> Ident.t -> t) -> namespace:Sig_component_kind.t -> Path.t -> t
val set_uid_if_none : t -> Uid.t -> t
module Make_reduce (Context : sig ... end) : sig ... end

The Make_reduce functor is used to generate a reduction function for shapes.

val local_reduce : t -> t