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