Module Allowance.Magic_allow_disallow
Takes a slow but type-correct Allow_disallow module and returns the magic version, which is faster. NOTE: for this to be sound, the functions in the original module must be identity functions (up to runtime representation).
Parameters
module X : Ocaml_typing.Allowance.Allow_disallowSignature
type ('a, 'b, 'd) sided = ('a, 'b, 'd) X.sidedval disallow_right :
('a, 'b, 'l * 'r) sided ->
('a, 'b, 'l * Ocaml_typing.Allowance.disallowed) sidedDisallows on the right.
val disallow_left :
('a, 'b, 'l * 'r) sided ->
('a, 'b, Ocaml_typing.Allowance.disallowed * 'r) sidedDisallows a the left.
val allow_right :
('a, 'b, 'l * Ocaml_typing.Allowance.allowed) sided ->
('a, 'b, 'l * 'r) sidedGeneralizes a right-hand-side allowed to be any allowance.
val allow_left :
('a, 'b, Ocaml_typing.Allowance.allowed * 'r) sided ->
('a, 'b, 'l * 'r) sidedGeneralizes a left-hand-side allowed to be any allowance.