package refl

  1. Overview
  2. Docs
type (!'a, !'b, !'positive, !'negative) item =
  1. | None : ('a0, 'b0, [ `Absent ], [ `Absent ]) item
  2. | P : ('a1 -> 'b1) -> ('a1, 'b1, 'c, [ `Absent ]) item
  3. | N : ('b2 -> 'a2) -> ('a2, 'b2, [ `Absent ], 'd) item
  4. | PN : (('a3 -> 'b3) * ('b3 -> 'a3)) -> ('a3, 'b3, 'e, 'f) item
type (!'a, !'b, !'positive, !'negative) t =
  1. | [] : (unit, unit, unit, unit) t
  2. | :: : ('a0, 'b0, 'positive0, 'negative0) item * ('aa, 'bb, 'positive_tail, 'negative_tail) t -> ('a0 * 'aa, 'b0 * 'bb, 'positive0 * 'positive_tail, 'negative0 * 'negative_tail) t
val reverse_item : ('a, 'b, 'positive, 'negative) item -> ('b, 'a, 'negative, 'positive) item
val pos : ('a, 'b, [ `Present ], 'negative) item -> 'a -> 'b
val 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
val reverse : ('a, 'b, 'positive, 'negative) t -> ('b, 'a, 'negative, 'positive) t
type (!'a, !'b, !'positive, !'negative) symmetric_item =
  1. | SNone : ('a0, 'b0, [ `Absent ], [ `Absent ]) symmetric_item
  2. | SPN : (('a1 -> 'b1) * ('b1 -> 'a1)) -> ('a1, 'b1, 'c, 'd) symmetric_item
type (!'a, !'b, !'positive, !'negative) symmetric =
  1. | [] : (unit, unit, unit, unit) symmetric
  2. | :: : ('a0, 'b0, 'positive0, 'negative0) symmetric_item * ('aa, 'bb, 'positive_tail, 'negative_tail) symmetric -> ('a0 * 'aa, 'b0 * 'bb, 'positive0 * 'positive_tail, 'negative0 * 'negative_tail) symmetric
type (!'a, !'b, !'sp, !'sn, !'ap, !'an) make_transfer =
  1. | TNone : ('a0, 'b0, [ `Absent ], [ `Absent ], 'ap0, 'an0) make_transfer
  2. | TP : ('a1, 'b1, 'ap1, 'an1) t -> ('a1, 'b1, 'c, [ `Absent ], 'ap1, 'an1) make_transfer
  3. | TN : ('a2, 'b2, 'an2, 'ap2) t -> ('a2, 'b2, [ `Absent ], 'd, 'ap2, 'an2) make_transfer
  4. | TPN : ('a3, 'b3, 'an3, 'ap3) symmetric -> ('a3, 'b3, 'e, 'f, 'an3, 'ap3) make_transfer
val reverse_of_symmetric : ('a, 'b, 'positive, 'negative) symmetric -> ('a, 'b, 'negative, 'positive) symmetric
val p_of_symmetric : ('a, 'b, 'ap, 'an) symmetric -> ('a, 'b, 'ap, 'an) t
val n_of_symmetric : ('a, 'b, 'ap, 'an) symmetric -> ('a, 'b, 'an, 'ap) t
val 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
type (!'rec_group, !'a_kinds, !'b_kinds) make = {
  1. 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;
}
val make : ('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