Module Core.OptionSource
This module extends Base.Option with bin_io, quickcheck, and support for ppx_optional.
val bin_size_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Size.sizer ->
('a : value_or_null) Core.Option.t Bin_prot.Size.sizerval bin_size_t__local :
('a : value_or_null). ('a : value_or_null) Bin_prot.Size.sizer__local ->
('a : value_or_null) Core.Option.t Bin_prot.Size.sizer__localval bin_write_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Write.writer ->
('a : value_or_null) Core.Option.t Bin_prot.Write.writerval bin_write_t__local :
('a : value_or_null). ('a : value_or_null) Bin_prot.Write.writer__local ->
('a : value_or_null) Core.Option.t Bin_prot.Write.writer__localval bin_writer_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Type_class.writer ->
('a : value_or_null) Core.Option.t Bin_prot.Type_class.writerval bin_read_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Read.reader ->
('a : value_or_null) Core.Option.t Bin_prot.Read.readerval __bin_read_t__ :
('a : value_or_null). ('a : value_or_null) Bin_prot.Read.reader ->
('a : value_or_null) Core.Option.t Bin_prot.Read.vtag_readerval bin_reader_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Type_class.reader ->
('a : value_or_null) Core.Option.t Bin_prot.Type_class.readerval bin_t :
('a : value_or_null). ('a : value_or_null) Bin_prot.Type_class.t ->
('a : value_or_null) Core.Option.t Bin_prot.Type_class.tval typerep_of_t :
'a Typerep_lib.Std.Typerep.t ->
'a Core.Option.t Typerep_lib.Std.Typerep.t @@ portableval typename_of_t :
'a Typerep_lib.Std.Typename.t ->
'a Core.Option.t Typerep_lib.Std.Typename.t @@ portableval bin_size_t__bits64 :
'a Bin_prot.Size.sizer ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Size.sizer @@ portableval bin_size_t__bits64__local :
'a Bin_prot.Size.sizer__local ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Size.sizer__local @@ portableval bin_write_t__bits64 :
'a Bin_prot.Write.writer ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Write.writer @@ portableval bin_write_t__bits64__local :
'a Bin_prot.Write.writer__local ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Write.writer__local @@ portableval bin_writer_t__bits64 :
'a Bin_prot.Type_class.writer ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Type_class.writer @@ portableval bin_size_t__bits32 :
'a Bin_prot.Size.sizer ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Size.sizer @@ portableval bin_size_t__bits32__local :
'a Bin_prot.Size.sizer__local ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Size.sizer__local @@ portableval bin_write_t__bits32 :
'a Bin_prot.Write.writer ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Write.writer @@ portableval bin_write_t__bits32__local :
'a Bin_prot.Write.writer__local ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Write.writer__local @@ portableval bin_writer_t__bits32 :
'a Bin_prot.Type_class.writer ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Type_class.writer @@ portableval bin_size_t__word :
'a Bin_prot.Size.sizer ->
'a Base.Option.Constructors.t__word Bin_prot.Size.sizer @@ portableval bin_size_t__word__local :
'a Bin_prot.Size.sizer__local ->
'a Base.Option.Constructors.t__word Bin_prot.Size.sizer__local @@ portableval bin_write_t__word :
'a Bin_prot.Write.writer ->
'a Base.Option.Constructors.t__word Bin_prot.Write.writer @@ portableval bin_write_t__word__local :
'a Bin_prot.Write.writer__local ->
'a Base.Option.Constructors.t__word Bin_prot.Write.writer__local @@ portableval bin_writer_t__word :
'a Bin_prot.Type_class.writer ->
'a Base.Option.Constructors.t__word Bin_prot.Type_class.writer @@ portableval bin_size_t__float64 :
'a Bin_prot.Size.sizer ->
'a Base.Option.Constructors.t__float64 Bin_prot.Size.sizer @@ portableval bin_size_t__float64__local :
'a Bin_prot.Size.sizer__local ->
'a Base.Option.Constructors.t__float64 Bin_prot.Size.sizer__local @@ portableval bin_write_t__float64 :
'a Bin_prot.Write.writer ->
'a Base.Option.Constructors.t__float64 Bin_prot.Write.writer @@ portableval bin_write_t__float64__local :
'a Bin_prot.Write.writer__local ->
'a Base.Option.Constructors.t__float64 Bin_prot.Write.writer__local @@ portableval bin_writer_t__float64 :
'a Bin_prot.Type_class.writer ->
'a Base.Option.Constructors.t__float64 Bin_prot.Type_class.writer @@ portableval bin_size_t__float32 :
'a Bin_prot.Size.sizer ->
'a Base.Option.Constructors.t__float32 Bin_prot.Size.sizer @@ portableval bin_size_t__float32__local :
'a Bin_prot.Size.sizer__local ->
'a Base.Option.Constructors.t__float32 Bin_prot.Size.sizer__local @@ portableval bin_write_t__float32 :
'a Bin_prot.Write.writer ->
'a Base.Option.Constructors.t__float32 Bin_prot.Write.writer @@ portableval bin_write_t__float32__local :
'a Bin_prot.Write.writer__local ->
'a Base.Option.Constructors.t__float32 Bin_prot.Write.writer__local @@ portableval bin_writer_t__float32 :
'a Bin_prot.Type_class.writer ->
'a Base.Option.Constructors.t__float32 Bin_prot.Type_class.writer @@ portableval bin_read_t__bits64 :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Read.reader @@ portableval __bin_read_t__bits64__ :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Read.vtag_reader @@ portableval bin_reader_t__bits64 :
'a Bin_prot.Type_class.reader ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Type_class.reader @@ portableval bin_read_t__bits32 :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Read.reader @@ portableval __bin_read_t__bits32__ :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Read.vtag_reader @@ portableval bin_reader_t__bits32 :
'a Bin_prot.Type_class.reader ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Type_class.reader @@ portableval bin_read_t__word :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__word Bin_prot.Read.reader @@ portableval __bin_read_t__word__ :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__word Bin_prot.Read.vtag_reader @@ portableval bin_reader_t__word :
'a Bin_prot.Type_class.reader ->
'a Base.Option.Constructors.t__word Bin_prot.Type_class.reader @@ portableval bin_read_t__float64 :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__float64 Bin_prot.Read.reader @@ portableval __bin_read_t__float64__ :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__float64 Bin_prot.Read.vtag_reader @@ portableval bin_reader_t__float64 :
'a Bin_prot.Type_class.reader ->
'a Base.Option.Constructors.t__float64 Bin_prot.Type_class.reader @@ portableval bin_read_t__float32 :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__float32 Bin_prot.Read.reader @@ portableval __bin_read_t__float32__ :
'a Bin_prot.Read.reader ->
'a Base.Option.Constructors.t__float32 Bin_prot.Read.vtag_reader @@ portableval bin_reader_t__float32 :
'a Bin_prot.Type_class.reader ->
'a Base.Option.Constructors.t__float32 Bin_prot.Type_class.reader @@ portableval bin_t__bits64 :
'a Bin_prot.Type_class.t ->
'a Base.Option.Constructors.t__bits64 Bin_prot.Type_class.t @@ portableval bin_t__bits32 :
'a Bin_prot.Type_class.t ->
'a Base.Option.Constructors.t__bits32 Bin_prot.Type_class.t @@ portableval bin_t__word :
'a Bin_prot.Type_class.t ->
'a Base.Option.Constructors.t__word Bin_prot.Type_class.t @@ portableval bin_t__float64 :
'a Bin_prot.Type_class.t ->
'a Base.Option.Constructors.t__float64 Bin_prot.Type_class.t @@ portableval bin_t__float32 :
'a Bin_prot.Type_class.t ->
'a Base.Option.Constructors.t__float32 Bin_prot.Type_class.t @@ portableType and Interfaces
include sig ... end
include sig ... end
val sexp_of_t__bits64 :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__bits64 ->
Sexplib0.Sexp.tval sexp_of_t__bits32 :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__bits32 ->
Sexplib0.Sexp.tval sexp_of_t__word :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__word ->
Sexplib0.Sexp.tval sexp_of_t__float64 :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__float64 ->
Sexplib0.Sexp.tval sexp_of_t__float32 :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__float32 ->
Sexplib0.Sexp.tval sexp_of_t__'value_bits64' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_bits64' ->
Sexplib0.Sexp.tval sexp_of_t__'value_bits32' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_bits32' ->
Sexplib0.Sexp.tval sexp_of_t__'value_word' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_word' ->
Sexplib0.Sexp.tval sexp_of_t__'value_float64' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_float64' ->
Sexplib0.Sexp.tval sexp_of_t__'value_float32' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_float32' ->
Sexplib0.Sexp.tval sexp_of_t__'value_value' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_value' ->
Sexplib0.Sexp.tval sexp_of_t__'value_'value_value'' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_'value_value'' ->
Sexplib0.Sexp.tval sexp_of_t__'value_'value_value_value'' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_'value_value_value'' ->
Sexplib0.Sexp.tval sexp_of_t__'value_'value_value_value_value'' :
('a -> Sexplib0.Sexp.t) ->
'a Base.Option.Constructors.t__'value_'value_value_value_value'' ->
Sexplib0.Sexp.tval sexp_of_t__bits64__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__bits64 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__bits32__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__bits32 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__word__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__word @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__float64__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__float64 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__float32__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__float32 @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_bits64'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_bits64' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_bits32'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_bits32' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_word'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_word' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_float64'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_float64' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_float32'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_float32' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_value'__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_value' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_'value_value''__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_'value_value'' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_'value_value_value''__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_'value_value_value'' @ local ->
Sexplib0.Sexp.t @ localval sexp_of_t__'value_'value_value_value_value''__stack :
('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Option.Constructors.t__'value_'value_value_value_value'' @ local ->
Sexplib0.Sexp.t @ localval t_of_sexp__bits64 :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__bits64val t_of_sexp__bits32 :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__bits32val t_of_sexp__word :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__wordval t_of_sexp__float64 :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__float64val t_of_sexp__float32 :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__float32val t_of_sexp__'value_bits64' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_bits64'val t_of_sexp__'value_bits32' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_bits32'val t_of_sexp__'value_word' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_word'val t_of_sexp__'value_float64' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_float64'val t_of_sexp__'value_float32' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_float32'val t_of_sexp__'value_value' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_value'val t_of_sexp__'value_'value_value'' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_'value_value''val t_of_sexp__'value_'value_value_value'' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_'value_value_value''val t_of_sexp__'value_'value_value_value_value'' :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a Base.Option.Constructors.t__'value_'value_value_value_value''include sig ... end
val hash_fold_t :
('a : value_or_null). (Ppx_hash_lib.Std.Hash.state ->
('a : value_or_null) ->
Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
('a : value_or_null) option ->
Ppx_hash_lib.Std.Hash.stateval sexp_of_t :
('a : value_or_null). (('a : value_or_null) -> Sexplib0.Sexp.t) ->
('a : value_or_null) option ->
Sexplib0.Sexp.tval sexp_of_t__stack :
('a : value_or_null). (('a : value_or_null) @ local ->
Sexplib0.Sexp.t @ local) ->
('a : value_or_null) option @ local ->
Sexplib0.Sexp.t @ localval t_of_sexp :
('a : value_or_null). (Sexplib0.Sexp.t -> ('a : value_or_null)) ->
Sexplib0.Sexp.t ->
('a : value_or_null) optionval t_sexp_grammar :
('a : value_or_null). ('a : value_or_null) Sexplib0.Sexp_grammar.t ->
('a : value_or_null) option Sexplib0.Sexp_grammar.t @@ portableinclude Base.Invariant.S1 with type 'a t := 'a option
Applicative interface
Options form an applicative, where:
return x = Some xNone <*> x = NoneSome f <*> None = NoneSome f <*> Some x = Some (f x)
include Base.Applicative.S__'value_or_null_mod_maybe_null'__local
with type ('a : value_or_null) t := 'a option
Applies the functions in one t to the values in another. Well-behaved applicatives satisfy these "laws", using <*> as infix apply:
return Fn.id <*> tis equivalent totreturn Fn.compose <*> tf <*> tg <*> txis equivalent totf <*> (tg <*> tx)return f <*> return xis equivalent toreturn (f x)tf <*> return xis equivalent toreturn (fun f -> f x) <*> tf
Combines values in two ts as tuples. Using <*> as infix apply, equivalent to return (fun a b -> a, b) <*> ta <*> tb.
Combines the contents of two ts. Using <*> as infix apply, equivalent to return f <*> ta <*> tb.
Combines the contents of three ts. Using <*> as infix apply, equivalent to return f <*> ta <*> tb <*> tc.
Monadic interface
Options form a monad, where:
return x = Some x(None >>= f) = None(Some x >>= f) = f x
include Base.Monad.S__'value_or_null_mod_maybe_null'__local
with type ('a : value_or_null) t := 'a option
Combines nested t into just one layer. Equivalent to bind t ~f:Fn.id.
Ignores contained values of t. Equivalent to map t ~f:ignore.
Extracting Underlying Values
include sig ... end
include sig ... end
Extracts the underlying value if present, otherwise returns default.
val value_exn :
('a : value_or_null). here:lexing_position ->
?error:Base.Error.t ->
?message:string ->
'a option ->
'aExtracts the underlying value, or raises if there is no value present. The raised error can be augmented using the ~error and ~message optional arguments. If neither is provided, the raised error will include the provided location.
Extracts the underlying value if present, otherwise executes and returns the result of default. default is only executed if the underlying value is absent.
val fold :
('a : value_or_null) ('acc : value_or_null). 'a option ->
init:'acc ->
f:('acc -> 'a -> 'acc) @ local ->
'accOn None, returns init. On Some x, returns f init x.
Checks whether the provided element is there, using equal.
On None, returns false. On Some x, returns f x.
On None, returns true. On Some x, returns f x.
find t ~f returns t if t = Some x and f x = true; otherwise, find returns None.
val find_map :
('a : value_or_null) ('b : value_or_null). 'a option ->
f:('a -> 'b option) @ local ->
'b optionOn None, returns None. On Some x, returns f x.
call x f runs an optional function ~f on the argument.
merge a b ~f merges together the values from a and b using f. If both a and b are None, returns None. If only one is Some, returns that one, and if both are Some, returns Some of the result of applying f to the contents of a and b.
Constructors
try_with f returns Some x if f returns x and None if f raises an exception. See Result.try_with if you'd like to know which exception.
try_with_join f returns the optional value returned by f if it exits normally, and None if f raises an exception.
include sig ... end
first_some t1 t2 returns t1 if it has an underlying value, or t2 otherwise.
first_some_thunk a b is like first_some, but it only computes b () if a is None
some_if b x converts a value x to Some x if b, and None otherwise.
Predicates
include Core.Comparator.Derived with type 'a t := 'a Core.Option.t
val comparator :
('a, 'cmp) Base.Comparator.T.comparator ->
('a Core.Option.t, 'cmp Core.Option.comparator_witness)
Base.Comparator.T.comparatorinclude Core.Quickcheckable.S1__portable with type 'a t := 'a Core.Option.t
include Core.Quickcheck_intf.Definitions.S1 with type 'a t := 'a Core.Option.t
val quickcheck_generator :
'a Base_quickcheck.Generator.t ->
'a Core.Option.t Base_quickcheck.Generator.tval quickcheck_observer :
'a Base_quickcheck.Observer.t ->
'a Core.Option.t Base_quickcheck.Observer.tval quickcheck_shrinker :
'a Base_quickcheck.Shrinker.t ->
'a Core.Option.t Base_quickcheck.Shrinker.tval validate :
none:unit Validate.check ->
some:'a Validate.check ->
'a Core.Option.t Validate.check @@ portablemodule Optional_syntax :
Core.Optional_syntax.S1__local
with type 'a t := 'a Core.Option.t
and type 'a value := 'aYou might think that it's pointless to have Optional_syntax on options because OCaml already has nice syntax for matching on options. The reason to have this here is that you might have, for example, a tuple of an option and some other type that supports Optional_syntax. Since Optional_syntax can only be opted into at the granularity of the whole match expression, we need this Optional_syntax support for options in order to use it for the other half of the tuple.