lens

Functional lenses
IN THIS PACKAGE
Module Lens
type ('a, 'b) t = {
get : 'a -> 'b;(*

Functional getter

*)
set : 'b -> 'a -> 'a;(*

Functional setter

*)
}

Lens type definition

val modify : ( 'a, 'b ) t -> ( 'b -> 'b ) -> 'a -> 'a

Updates a value through a lens

Combinators

val compose : ( 'a, 'b ) t -> ( 'c, 'a ) t -> ( 'c, 'b ) t

Sequentially composes two lenses

val pair : ( 'a, 'b ) t -> ( 'c, 'd ) t -> ( 'a * 'c, 'b * 'd ) t

Pairs two lenses

val pair3 : ( 'a, 'b ) t -> ( 'c, 'd ) t -> ( 'e, 'f ) t -> ( 'a * 'c * 'e, 'b * 'd * 'f ) t

Pairs three lenses

val cond : ( 'a -> bool ) -> ( 'a, 'b ) t -> ( 'a, 'b ) t -> ( 'a, 'b ) t

Selects a lens checking a predicate.

cond pred lensTrue lensFalse: pred is applied to source. If true, lensTrue is selected. If false, lensFalse is selected.

State monad integration

val get_state : ( 'a, 'b ) t -> 'a -> 'b * 'a

Gets a value from the state monad.

val put_state : ( 'a, 'b ) t -> 'b -> 'a -> unit * 'a

Puts a value in the state monad.

val modify_state : ( 'a, 'b ) t -> ( 'b -> 'b ) -> 'a -> unit * 'a

Modifies a value in the state monad.

Stock lenses

val ignore : ( 'a, unit ) t

Trivial lens

val id : ( 'a, 'a ) t

Identity lens

val first : ( 'a * 'b, 'a ) t

Gets/sets the first element in a pair

val second : ( 'a * 'b, 'b ) t

Gets/sets the second element in a pair

val head : ( 'a list, 'a ) t

Gets/sets the first element in a list

val tail : ( 'a list, 'a list ) t

Gets/sets the tail of a list

val for_hash : 'a -> ( ( 'a, 'b ) Hashtbl.t, 'b option ) t

Lens for a particular key in a hashtable

val for_assoc : 'a -> ( ('a * 'b) list, 'b option ) t

Lens for a particular key in an associative list

val for_array : int -> ( 'a array, 'a ) t

Lens for a particular position in an array

val for_list : int -> ( 'a list, 'a ) t

Lens for a particular position in a list

val option_get : ( 'a option, 'a ) t

Lens for extracting the value from an option type (same as Option.get)

List combinators

val list_map : ( 'a, 'b ) t -> ( 'a list, 'b list ) t

Creates a lens that maps the given lens in a list

Isomorphism

val xmap : ( 'a -> 'b ) -> ( 'b -> 'a ) -> ( 'c, 'a ) t -> ( 'c, 'b ) t

Applies an isomorphism to the value viewed through a lens

module Infix : sig ... end

Infix operators

module StateInfix : sig ... end

Infix operators for the state monad