type ('a, 'b) t = ( 'a, 'b ) iso = {
ltor : 'a -> 'b; |
rtol : 'b -> 'a; |
}
val ltor : ( 'a, 'b ) iso -> 'a -> 'b
val rtol : ( 'a, 'b ) iso -> 'b -> 'a
val map : ( 'a, 'b ) iso -> ( 'b -> 'b ) -> 'a -> 'a
val compose : ( 'a, 'b ) iso -> ( 'b, 'c ) iso -> ( 'a, 'c ) iso
val (@@) : ( 'a, 'b ) iso -> ( 'b, 'c ) iso -> ( 'a, 'c ) iso
val product : ( 'a, 'b ) iso -> ( 'c, 'd ) iso -> ( 'a * 'c, 'b * 'd ) iso
val (<*>) : ( 'a, 'b ) iso -> ( 'c, 'd ) iso -> ( 'a * 'c, 'b * 'd ) iso
val assoc : ( ('a * 'b) * 'c, 'a * ('b * 'c) ) iso