`include module type of struct include Stdlib.Option end`
`type !'a t = 'a option =`

1. `| None`
2. `| Some of 'a`

`val none : 'a option`
`val some : 'a -> 'a option`
`val get : 'a option -> 'a`
`val join : 'a option option -> 'a option`
`val fold : none:'a -> some:('b -> 'a) -> 'b option -> 'a`
`val is_none : 'a option -> bool`
`val is_some : 'a option -> bool`
`val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool`
`val compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int`
`val to_result : none:'e -> 'a option -> ('a, 'e) Stdlib.result`
`val to_list : 'a option -> 'a list`
`val to_seq : 'a option -> 'a Stdlib.Seq.t`
`val map : f:('a -> 'b) -> 'a t -> 'b t`
`val bind : f:('a -> 'b t) -> 'a t -> 'b t`
`val iter : f:('a -> unit) -> 'a t -> unit`
`val filter : f:('a -> bool) -> 'a t -> 'a t`
`val value : default:'a -> 'a t -> 'a`