refl

PPX deriver for reflection
IN THIS PACKAGE
Module Refl . Eq . Equalers
type (!'a, !'b, !'occurrence) item =
| None : ( 'c, 'd, [ `Absent ] ) item
| Some : ( 'a0, 'b0 ) Equaler.t -> ( 'a0, 'b0, 'e ) item
type (!'a, !'b, !'occurrences) t =
| [] : ( unit, unit, unit ) t
| :: : ( 'head_a, 'head_b, 'occurrence ) item * ( 'tail_a, 'tail_b, 'occurrences0 ) t -> ( 'head_a * 'tail_a, 'head_b * 'tail_b, 'occurrence * 'occurrences0 ) t
val get : ( 'index, 'a, 'value_a, 'positive, 'occurrences ) Refl__Desc.variable -> ( 'index, 'b, 'value_b, 'positive, 'occurrences ) Refl__Desc.variable -> ( 'a, 'b, 'occurrences ) t -> ( 'value_a, 'value_b ) Equaler.t
val make_transfer : ( 'source, 'sub, 'arg ) Refl__Desc.transfer_arguments -> ( 'a, 'b, 'source ) t -> ( ( 'a, 'b, 'arg ) t, ( 'sub, [ `Absent ] ) Refl__Desc.eq ) result
type (!'arity_a, !'arity_b, !'rec_group, !'kinds, !'gadt_a, !'gadt_b) make = {
f : 'a 'b 'structure 'ap 'an 'ad. ( 'a, 'structure, 'arity_a, 'rec_group, 'kinds, 'ap, 'an, 'ad, 'gadt_a ) Refl__Desc.desc -> ( 'b, 'structure, 'arity_b, 'rec_group, 'kinds, 'ap, 'an, 'ad, 'gadt_b ) Refl__Desc.desc -> ( 'arity_a, 'arity_b, 'ad ) t -> ( 'a, 'b ) Equaler.t;
}
val make_transfer_vector : ( 'arity_a, 'arity_b, 'rec_group, 'kinds, 'gadt_a, 'gadt_b ) make -> ( 'types_a, 'structures, 'arity_a, 'rec_group, 'kinds, 'arguments, 'gadt_a ) Refl__Desc.vector -> ( 'types_b, 'structures, 'arity_b, 'rec_group, 'kinds, 'arguments, 'gadt_b ) Refl__Desc.vector -> ( 'positive, 'negative, 'direct, 'subpositive, 'subnegative, 'subdirect, 'arguments ) Refl__Desc.transfer -> ( 'arity_a, 'arity_b, 'direct ) t -> ( 'types_a, 'types_b, 'subdirect ) t
val skip : ( 'variables, 'skip_variables ) Refl__Desc.skip_vector -> ( 'a, 'b, 'variables ) t -> ( 'a, 'b, 'skip_variables ) t
val make : ( 'a, 'b, 'c, 'd, 'e, 'f ) make -> ( 'g, 'h, 'a, 'c, 'd, 'i, 'e ) Refl__Desc.vector -> ( 'j, 'h, 'b, 'c, 'd, 'i, 'f ) Refl__Desc.vector -> ( 'k, 'l, 'm, 'n, 'o, 'p, 'i ) Refl__Desc.transfer_skip -> ( 'a, 'b, 'm ) t -> ( 'g, 'j, 'p ) t
type !'presence any =
| None : [ `Absent ] any
| Some : {
item : 'a 'b. ( 'a, 'b ) Equaler.t;
} -> 'c any
val append : 'presence any -> ( 'presence, 'directs ) Refl__Desc.presences -> ( 'count, 'directs ) Refl__Desc.length -> ( 'directs, 'direct, 'subdirect ) Refl__Desc.append -> ( 'count, 'types_a ) Refl__Desc.length -> ( 'types_a, 'a, 'sub_a ) Refl__Desc.append -> ( 'count, 'types_b ) Refl__Desc.length -> ( 'types_b, 'b, 'sub_b ) Refl__Desc.append -> ( 'a, 'b, 'direct ) t -> ( 'sub_a, 'sub_b, 'subdirect ) t