Module Modes_lib.Modalities

include Per_axis with type 'a wrapped := 'a Modality.t
type t = {
  1. locality : Modes_lib__.Modes_lib_intf.Definitions.locality Modality.t;
  2. portability : Modes_lib__.Modes_lib_intf.Definitions.portability Modality.t;
  3. contention : Modes_lib__.Modes_lib_intf.Definitions.contention Modality.t;
  4. statefulness : Modes_lib__.Modes_lib_intf.Definitions.statefulness Modality.t;
  5. visibility : Modes_lib__.Modes_lib_intf.Definitions.visibility Modality.t;
  6. linearity : Modes_lib__.Modes_lib_intf.Definitions.linearity Modality.t;
  7. uniqueness : Modes_lib__.Modes_lib_intf.Definitions.uniqueness Modality.t;
  8. yielding : Modes_lib__.Modes_lib_intf.Definitions.yielding Modality.t;
  9. forkable : Modes_lib__.Modes_lib_intf.Definitions.forkable Modality.t;
  10. staticity : Modes_lib__.Modes_lib_intf.Definitions.staticity Modality.t;
}
val sexp_of_t : t -> Sexplib0.Sexp.t
type make_f = {
  1. f : 'a. 'a Modes_lib__.Modes_lib_intf.Definitions.axis -> 'a Modality.t;
}
val make : make_f -> t
val get : t -> 'a Modes_lib__.Modes_lib_intf.Definitions.axis -> 'a Modality.t
val set : t -> 'a Modes_lib__.Modes_lib_intf.Definitions.axis -> 'a Modality.t -> t
include Lattice with type t := t
val top : t
val bottom : t
val join : t -> t -> t
val meet : t -> t -> t
val le : t -> t -> bool
val equal : t -> t -> bool
val of_modals : mutable_implied:bool -> Modal.t list -> t

When omitted, axis is filled in with default or implied modality, taking into account whether the default is for immutable or mutable values.

val to_modals : mutable_implied:bool -> t -> Modal.t list
val to_modals_explicit : t -> Modal.t list