sig
type ('a, 'b) t = { get : 'a -> 'b; set : 'b -> 'a -> 'a; }
val modify : ('a, 'b) GapiLens.t -> ('b -> 'b) -> 'a -> 'a
val compose :
('a, 'b) GapiLens.t -> ('c, 'a) GapiLens.t -> ('c, 'b) GapiLens.t
val pair :
('a, 'b) GapiLens.t ->
('c, 'd) GapiLens.t -> ('a * 'c, 'b * 'd) GapiLens.t
val cond :
('a -> bool) ->
('a, 'b) GapiLens.t -> ('a, 'b) GapiLens.t -> ('a, 'b) GapiLens.t
val get_state : ('a, 'b) GapiLens.t -> 'a -> 'b * 'a
val put_state : ('a, 'b) GapiLens.t -> 'b -> 'a -> unit * 'a
val modify_state : ('a, 'b) GapiLens.t -> ('b -> 'b) -> 'a -> unit * 'a
val ignore : ('a, unit) GapiLens.t
val id : ('a, 'a) GapiLens.t
val first : ('a * 'b, 'a) GapiLens.t
val second : ('a * 'b, 'b) GapiLens.t
val head : ('a list, 'a) GapiLens.t
val tail : ('a list, 'a list) GapiLens.t
val for_hash : 'a -> (('a, 'b) Hashtbl.t, 'b option) GapiLens.t
val for_assoc : 'a -> (('a * 'b) list, 'b option) GapiLens.t
val for_array : int -> ('a array, 'a) GapiLens.t
val for_list : int -> ('a list, 'a) GapiLens.t
val option_get : ('a option, 'a) GapiLens.t
val list_map : ('a, 'b) GapiLens.t -> ('a list, 'b list) GapiLens.t
val xmap :
('a -> 'b) -> ('b -> 'a) -> ('c, 'a) GapiLens.t -> ('c, 'b) GapiLens.t
module Infix :
sig
val ( |. ) : 'a -> ('a, 'b) GapiLens.t -> 'b
val ( ^= ) : ('a, 'b) GapiLens.t -> 'b -> 'a -> 'a
val ( ^%= ) : ('a, 'b) GapiLens.t -> ('b -> 'b) -> 'a -> 'a
val ( |-- ) :
('a, 'b) GapiLens.t -> ('b, 'c) GapiLens.t -> ('a, 'c) GapiLens.t
val ( --| ) :
('a, 'b) GapiLens.t -> ('c, 'a) GapiLens.t -> ('c, 'b) GapiLens.t
val ( *** ) :
('a, 'b) GapiLens.t ->
('c, 'd) GapiLens.t -> ('a * 'c, 'b * 'd) GapiLens.t
val ( += ) : ('a, int) GapiLens.t -> int -> 'a -> 'a
val ( -= ) : ('a, int) GapiLens.t -> int -> 'a -> 'a
end
module StateInfix :
sig
val ( ^=! ) : ('a, 'b) GapiLens.t -> 'b -> 'a -> unit * 'a
val ( +=! ) : ('a, int) GapiLens.t -> int -> 'a -> unit * 'a
val ( -=! ) : ('a, int) GapiLens.t -> int -> 'a -> unit * 'a
val ( @=! ) : ('a, 'b list) GapiLens.t -> 'b list -> 'a -> unit * 'a
end
end