Sourcetype (!'a, !'b, !'positive, !'negative) item = | None : ('a0, 'b0, [ `Absent ], [ `Absent ]) item| P : ('a1 -> 'b1) -> ('a1, 'b1, 'c, [ `Absent ]) item| N : ('b2 -> 'a2) -> ('a2, 'b2, [ `Absent ], 'd) item| PN : (('a3 -> 'b3) * ('b3 -> 'a3)) -> ('a3, 'b3, 'e, 'f) item
Sourcetype (!'a, !'b, !'positive, !'negative) t = | [] : (unit, unit, unit, unit) t| :: : ('a0, 'b0, 'positive0, 'negative0) item
* ('aa, 'bb, 'positive_tail, 'negative_tail) t -> ('a0 * 'aa,
'b0 * 'bb,
'positive0
* 'positive_tail,
'negative0
* 'negative_tail)
t
Sourceval reverse_item :
('a, 'b, 'positive, 'negative) item ->
('b, 'a, 'negative, 'positive) item Sourceval pos : ('a, 'b, [ `Present ], 'negative) item -> 'a -> 'b Sourceval get :
('index, 'a, 'a_value, 'positive, 'direct) Refl__.Desc.variable ->
('index, 'b, 'b_value, 'positive, 'direct) Refl__.Desc.variable ->
('a, 'b, 'positive, 'negative) t ->
'a_value ->
'b_value Sourceval reverse :
('a, 'b, 'positive, 'negative) t ->
('b, 'a, 'negative, 'positive) t Sourcetype (!'a, !'b, !'positive, !'negative) symmetric_item = | SNone : ('a0, 'b0, [ `Absent ], [ `Absent ]) symmetric_item| SPN : (('a1 -> 'b1) * ('b1 -> 'a1)) -> ('a1, 'b1, 'c, 'd) symmetric_item
Sourcetype (!'a, !'b, !'positive, !'negative) symmetric = | [] : (unit, unit, unit, unit) symmetric| :: : ('a0, 'b0, 'positive0, 'negative0) symmetric_item
* ('aa, 'bb, 'positive_tail, 'negative_tail) symmetric -> ('a0 * 'aa,
'b0 * 'bb,
'positive0
* 'positive_tail,
'negative0
* 'negative_tail)
symmetric
Sourcetype (!'a, !'b, !'sp, !'sn, !'ap, !'an) make_transfer = | TNone : ('a0, 'b0, [ `Absent ], [ `Absent ], 'ap0, 'an0) make_transfer| TP : ('a1, 'b1, 'ap1, 'an1) t -> ('a1, 'b1, 'c, [ `Absent ], 'ap1, 'an1)
make_transfer| TN : ('a2, 'b2, 'an2, 'ap2) t -> ('a2, 'b2, [ `Absent ], 'd, 'ap2, 'an2)
make_transfer| TPN : ('a3, 'b3, 'an3, 'ap3) symmetric -> ('a3, 'b3, 'e, 'f, 'an3, 'ap3)
make_transfer
Sourceval make_transfer :
('p, 'n, 'sp, 'sn, 'ap, 'an) Refl__.Desc.transfer_matrix ->
('a, 'b, 'p, 'n) t ->
('a, 'b, 'sp, 'sn, 'ap, 'an) make_transfer Sourcetype (!'rec_group, !'a_kinds, !'b_kinds) make = {f : 'a 'b 'structure 'a_arity 'b_arity 'ap 'an 'ad 'gadt. ('a,
'structure,
'a_arity,
'rec_group,
'a_kinds,
'ap,
'an,
'ad,
'gadt)
Refl__.Desc.desc ->
('b, 'structure, 'b_arity, 'rec_group, 'b_kinds, 'ap, 'an, 'ad, 'gadt)
Refl__.Desc.desc ->
('a_arity, 'b_arity, 'ap, 'an) t ->
'a ->
'b;
} Sourceval make_transfer_vector :
('rec_group, 'a_kinds, 'a_kinds) make ->
('a_types, 'structures, 'a_arity, 'rec_group, 'a_kinds, 'arguments, 'gadt)
Refl__.Desc.vector ->
('b_types, 'structures, 'b_arity, 'rec_group, 'a_kinds, 'arguments, 'gadt)
Refl__.Desc.vector ->
('positive,
'negative,
'direct,
'subpositive,
'subnegative,
'subdirect,
'arguments)
Refl__.Desc.transfer ->
('a_arity, 'b_arity, 'positive, 'negative) t ->
('a_types, 'b_types, 'subpositive, 'subnegative) t Sourceval skip :
('positive, 'skip_positive) Refl__.Desc.skip_vector ->
('negative, 'skip_negative) Refl__.Desc.skip_vector ->
('a, 'b, 'positive, 'negative) t ->
('a, 'b, 'skip_positive, 'skip_negative) t Sourceval make :
('a, 'b, 'b) make ->
('c, 'd, 'e, 'a, 'b, 'f, 'g) Refl__.Desc.vector ->
('h, 'd, 'i, 'a, 'b, 'f, 'g) Refl__.Desc.vector ->
('j, 'k, 'l, 'm, 'n, 'o, 'f) Refl__.Desc.transfer_skip ->
('e, 'i, 'j, 'k) t ->
('c, 'h, 'm, 'n) t