Source file accessor_option.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
open! Base
open! Import
type 'a t = 'a Option.t =
| None
| Some of 'a
[@@deriving accessors]
let default default ~is_default =
Accessor.isomorphism
~get:(function
| None -> default
| Some a -> a)
~construct:(fun b -> if is_default b then None else Some b)
;;
include Accessor.Of_monad (struct
include Option
let apply = `Define_using_bind
end)