jon.recoil.org

Module Jkind0.Const

type 'd t = 'd Types.jkind_const_desc
val shallow_no_with_bounds_and_equal : 'd1 t -> 'd2 t -> bool

This returns true iff both kinds have no with-bounds and they are shallowly equal. Normally, we want an equality check to happen only on values that are allowed on both the left and the right. But a type with no with-bounds is allowed on the left and the right, so we test for that condition first before doing the proper equality check.

Note that this function IS NOT SEMANTIC EQUALITY - in particular it does not expand kind aliases, so it may return false for semantically equal kinds. That's fine for the places where it is used (printing and a memo table), but be aware of this if adding new uses.

include Allowance.Allow_disallow with type (_, _, 'd) sided = 'd t
type (_, _, 'd) sided = 'd t
val disallow_right : ('a, 'b, 'l * 'r) sided -> ('a, 'b, 'l * Allowance.disallowed) sided

Disallows on the right.

val disallow_left : ('a, 'b, 'l * 'r) sided -> ('a, 'b, Allowance.disallowed * 'r) sided

Disallows a the left.

val allow_right : ('a, 'b, 'l * Allowance.allowed) sided -> ('a, 'b, 'l * 'r) sided

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

val allow_left : ('a, 'b, Allowance.allowed * 'r) sided -> ('a, 'b, 'l * 'r) sided

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

module Builtin : sig ... end