Module Crossing.Comonadic

module Atom : sig ... end
type t

The mode crossing capability on the whole comonadic fragment.

include Mode_intf.Lattice with type t := t
val min : t
val max : t
val le : t -> t -> bool
val equal : t -> t -> bool

equal a b is equivalent to le a b && le b a, but defined separately for performance reasons

val join : t -> t -> t
val meet : t -> t -> t
val print : Format.formatter -> t -> unit
val create : regionality:Regionality.Const.t Atom.t -> linearity:Linearity.Const.t Atom.t -> portability:Portability.Const.t Atom.t -> forkable:Forkable.Const.t Atom.t -> yielding:Yielding.Const.t Atom.t -> statefulness:Statefulness.Const.t Atom.t -> t

Create a mode crossing on the comonadic fragment from the collection of mode crossings on each comonadic axes.

val always_constructed_at : Value.Comonadic.Const.t -> t

Create the mode crossing for a type whose values are always constructed at the given mode.