8 lines
243 B
OCaml
8 lines
243 B
OCaml
type ('s, 't, 'a, 'b) lens = ('s -> 'a) * ('b -> 's -> 't)
|
|
type ('s, 'a) lens' = ('s, 's, 'a, 'a) lens
|
|
|
|
let lens ~view ~set = view, set
|
|
let view (get, _) = get
|
|
let set (_, put) = put
|
|
let over (get, put) ~f source = put (f (get source)) source
|