jon.recoil.org

Module Mode.Value

The most general mode. Used in most type checking, including in value bindings in Env

module Monadic : sig ... end
module Comonadic : sig ... end
module Axis : sig ... end
type ('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j) modes = {
  1. areality : 'a;
  2. linearity : 'b;
  3. uniqueness : 'c;
  4. portability : 'd;
  5. contention : 'e;
  6. forkable : 'f;
  7. yielding : 'g;
  8. statefulness : 'h;
  9. visibility : 'i;
  10. staticity : 'j;
}
module Const : sig ... end
type 'a simple_axerror := 'a Ocaml_typing.Mode.simple_error
include Ocaml_typing.Mode_intf.Common with module Const := Ocaml_typing.Mode.Value.Const and type error := Ocaml_typing.Mode.Value.error and type simple_error := Ocaml_typing.Mode.Value.simple_error and type 'd t := 'd Ocaml_typing.Mode.Value.t

Takes a submode error accompanied by a pinpoint of the original submode, returns an explaining printer for each side. Each printer prints either a mode constant name, or "mode because ...". The function assumes pinpoint is already printed, which allows simplifying its own printing. The caller is responsible for printing pinpoint and placing the result of this function in a suitable linguistic context.

include Ocaml_typing.Allowance.Allow_disallow with type (_, _, 'd) sided = 'd Ocaml_typing.Mode.Value.t
type (_, _, 'd) sided = 'd Ocaml_typing.Mode.Value.t

Disallows on the right.

Disallows a the left.

Generalizes a right-hand-side allowed to be any allowance.

Generalizes a left-hand-side allowed to be any allowance.

val newvar : unit -> ('l * 'r) Ocaml_typing.Mode.Value.t

Takes the actual and expected mode of something, check that the actual mode is less than the expected mode. In case of error, the error is returned and no mutation is done.

The two modes should be hinted sufficently that the submode is self-evident. In particular, the two modes should be about the "same thing". See the notes How to submode for details.

Similar to submode, but instead of returning an error, raise user-friendly errors directly, with pinpoint describing the thing whose actual and expected modes are being checked.

If you need more than pinpoint as the context in the error message, consider submode.

Similiar to submode, but crashes the compiler if errors. Use this function if the submode is guaranteed to succeed.

val print : ?verbose:bool -> unit -> Stdlib.Format.formatter -> ('l * 'r) Ocaml_typing.Mode.Value.t -> unit
val of_const : ?hint_monadic:('l * 'r) Ocaml_typing.Allowance.neg Hint.const -> ?hint_comonadic:('l * 'r) Ocaml_typing.Allowance.pos Hint.const -> Ocaml_typing.Mode.Value.Const.t -> ('l * 'r) Ocaml_typing.Mode.Value.t
module List : sig ... end

max_with ax elt returns max but with the axis ax set to elt.

min_with ax elt returns min but with the axis ax set to elt.

Returns the lower bound needed for B -> C in relation to A -> B -> C