jon.recoil.org

Module Modes_libSource

Sourcetype monadicity =
  1. | Comonadic
  2. | Monadic
Sourceval sexp_of_monadicity : monadicity -> Sexplib0.Sexp.t

Modal axes

Sourcetype locality =
  1. | Global
  2. | Local
Sourceval sexp_of_locality : locality -> Sexplib0.Sexp.t
Sourcetype portability =
  1. | Portable
  2. | Shareable
  3. | Nonportable
Sourceval sexp_of_portability : portability -> Sexplib0.Sexp.t
Sourcetype contention =
  1. | Uncontended
  2. | Shared
  3. | Contended
Sourceval sexp_of_contention : contention -> Sexplib0.Sexp.t
Sourcetype statefulness =
  1. | Stateless
  2. | Reading
  3. | Stateful
Sourceval sexp_of_statefulness : statefulness -> Sexplib0.Sexp.t
Sourcetype visibility =
  1. | Read_write
  2. | Read
  3. | Immutable
Sourceval sexp_of_visibility : visibility -> Sexplib0.Sexp.t
Sourcetype linearity =
  1. | Many
  2. | Once
Sourceval sexp_of_linearity : linearity -> Sexplib0.Sexp.t
Sourcetype uniqueness =
  1. | Unique
  2. | Aliased
Sourceval sexp_of_uniqueness : uniqueness -> Sexplib0.Sexp.t
Sourcetype yielding =
  1. | Unyielding
  2. | Yielding
Sourceval sexp_of_yielding : yielding -> Sexplib0.Sexp.t
Sourcetype forkable =
  1. | Forkable
  2. | Unforkable
Sourceval sexp_of_forkable : forkable -> Sexplib0.Sexp.t
Sourcetype staticity =
  1. | Static
  2. | Dynamic
Sourceval sexp_of_staticity : staticity -> Sexplib0.Sexp.t

Nonmodal jkind axes (soon to be nontrivialities)

Sourcetype externality =
  1. | External_
  2. | External64
  3. | Internal
Sourceval sexp_of_externality : externality -> Sexplib0.Sexp.t
Sourcetype nullability =
  1. | Non_null
  2. | Maybe_null
Sourceval sexp_of_nullability : nullability -> Sexplib0.Sexp.t
Sourcetype separability =
  1. | Non_pointer
  2. | Non_pointer64
  3. | Non_float
  4. | Separable
  5. | Maybe_separable
Sourceval sexp_of_separability : separability -> Sexplib0.Sexp.t
Sourcetype !'a axis =
  1. | Locality : locality axis
  2. | Portability : portability axis
  3. | Contention : contention axis
  4. | Statefulness : statefulness axis
  5. | Visibility : visibility axis
  6. | Linearity : linearity axis
  7. | Uniqueness : uniqueness axis
  8. | Yielding : yielding axis
  9. | Forkable : forkable axis
  10. | Staticity : staticity axis
Sourceval sexp_of_axis : 'a. 'a axis -> Sexplib0.Sexp.t
Sourcetype !'a nonmodal_axis =
  1. | Externality : externality nonmodal_axis
  2. | Nullability : nullability nonmodal_axis
  3. | Separability : separability nonmodal_axis
Sourcetype !'a jkind_axis =
  1. | Modal of 'a axis
  2. | Nonmodal of 'a nonmodal_axis
Sourcemodule type Wrapper = sig ... end
Sourcemodule type Lattice = sig ... end
Sourcemodule type Per_axis = sig ... end
Sourcemodule type Nonmodal_axis = sig ... end
Sourcemodule Base_sort : sig ... end
Sourcemodule Modal : sig ... end
Sourcemodule Nonmodal : sig ... end
Sourcemodule Jkind_mod : sig ... end
Sourcemodule Layout : sig ... end
Sourcemodule type Axis = sig ... end
Sourcemodule Axis : sig ... end
Sourcemodule Nonmodal_axis : sig ... end
Sourcemodule Jkind_axis : sig ... end

Modal axes

Sourcemodule Locality : Axis with type t = locality
Sourcemodule Portability : Axis with type t = portability
Sourcemodule Contention : Axis with type t = contention
Sourcemodule Statefulness : Axis with type t = statefulness
Sourcemodule Visibility : Axis with type t = visibility
Sourcemodule Linearity : Axis with type t = linearity
Sourcemodule Uniqueness : Axis with type t = uniqueness
Sourcemodule Yielding : Axis with type t = yielding

Nonmodal jkind axes (soon to be nontrivialities)

Sourcemodule Optional : sig ... end
Sourcemodule Modes : sig ... end
Sourcemodule Modalities : sig ... end
Sourcemodule Crossings : sig ... end
Sourcemodule Nonmodals : sig ... end
Sourcemodule Jkind_modifiers : sig ... end
Sourcemodule Kind : sig ... end
Sourceval apply_modalities : Modalities.t -> Modes.t -> Modes.t

cross crossing mode strengthens mode as it would on a variable of kind _ mod crossing.

In the compiler, this is known as cross_left.

Sourceval uncross : Crossings.t -> Modes.t -> Modes.t

uncross crossing mode is the weakest mode mode' such that cross crossing mode' is at least as strong as mode. It acts as a sort of inverse to cross.

In the compiler, this is known as cross_right.