type ('a, 'b) t = ( 'a, 'b ) lens = {get : 'a -> 'b; |
put : 'b -> 'a -> 'a; |
}val get : ( 'a, 'b ) lens -> 'a -> 'bval put : ( 'a, 'b ) lens -> 'b -> 'a -> 'aval map : ( 'a, 'b ) lens -> ( 'b -> 'b ) -> 'a -> 'aval compose : ( 'a, 'b ) lens -> ( 'b, 'c ) lens -> ( 'a, 'c ) lensval (@@) : ( 'a, 'b ) lens -> ( 'b, 'c ) lens -> ( 'a, 'c ) lensval product : ( 'a, 'b ) lens -> ( 'c, 'd ) lens -> ( 'a * 'c, 'b * 'd ) lensval (<*>) : ( 'a, 'b ) lens -> ( 'c, 'd ) lens -> ( 'a * 'c, 'b * 'd ) lensval fst : ( 'a * 'b, 'a ) lensval snd : ( 'a * 'b, 'b ) lens