Module LangUtils.Lens

type ('a, 'b) lens = {
get : 'a -> 'b;
set : 'b -> 'a -> 'a;
}
type ('a, 'b) prism = {
preview : 'a -> 'b option;
review : 'b -> 'a;
}
val option : ( 'a option, 'a ) prism
val compose : ( 'a, 'b ) lens -> ( 'b, 'c ) lens -> ( 'a, 'c ) lens
val compose_prism : ( 'a, 'b ) lens -> ( 'b, 'c ) prism -> ( 'a, 'c ) lens
val fst : ( 'a * 'b, 'a ) lens
val snd : ( 'a * 'b, 'b ) lens
val hd : ( 'a list, 'a ) prism
val nth : int -> ( 'a list, 'a ) prism
val (|--) : ( 'a, 'b ) lens -> ( 'b, 'c ) lens -> ( 'a, 'c ) lens
val (|-~) : ( 'a, 'b ) lens -> ( 'b, 'c ) prism -> ( 'a, 'c ) lens
val get : ( 'a, 'b ) lens -> 'c -> 'd
val set : ( 'a, 'b ) lens -> 'c -> 'd -> 'e
val name_of_id : [< Odoc_model.Paths.Identifier.t ] -> string
module Signature : sig ... end
module Module : sig ... end
module Include : sig ... end
module ModuleType : sig ... end
module FunctorParameter : sig ... end
module TypeDecl : sig ... end
module TypeExpr : sig ... end