Module Optic.Prism

type ('a, 'b) t = ( 'a, 'b ) prism = {
extract : 'a -> 'b option;
make : 'b -> 'a;
}
val extract : ( 'a, 'b ) prism -> 'a -> 'b option
val make : ( 'a, 'b ) prism -> 'b -> 'a
val map : ( 'a, 'b ) prism -> ( 'b -> 'b ) -> 'a -> 'a
val compose : ( 'a, 'b ) prism -> ( 'b, 'c ) prism -> ( 'a, 'c ) prism
val product : ( 'a, 'b ) prism -> ( 'c, 'd ) prism -> ( 'a * 'c, 'b * 'd ) prism
val id : ( 'a, 'a ) prism
val satisfy : ( 'a -> bool ) -> ( 'a, 'a ) prism
val is : 'a -> ( 'a, 'a ) prism
val none : ( 'a option, unit ) prism
val some : ( 'a option, 'a ) prism
val nil : ( 'a list, unit ) prism
val cons : ( 'a list, 'a * 'a list ) prism