refl
PPX deriver for reflection
1024" x-on:close-sidebar="sidebar=window.innerWidth > 1024 && true">
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
type (!'a, !'b, !'positive, !'negative) item =
| None : ( 'a0, 'b0, [ `Absent ], [ `Absent ] ) item |
| P : ( 'a1, 'b1 ) Mapper.t -> ( 'a1, 'b1, 'c, [ `Absent ] ) item |
| N : ( 'b2, 'a2 ) Mapper.t -> ( 'a2, 'b2, [ `Absent ], 'd ) item |
| PN : (( 'a3, 'b3 ) Mapper.t * ( 'b3, 'a3 ) Mapper.t) -> ( 'a3, 'b3, 'e, 'f )
item |
type (!'a, !'b, !'positive, !'negative) symmetric_item =
| SNone : ( 'a0, 'b0, [ `Absent ], [ `Absent ] ) symmetric_item |
| SPN : (( 'a1, 'b1 ) Mapper.t * ( 'b1, 'a1 ) Mapper.t) -> ( 'a1, 'b1, 'c, 'd )
symmetric_item |
type (!'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 |
type (!'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 |
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 = {
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 ) Mapper.t; |
}
val 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