package core
Module Percent.OptionSource
The value nan cannot be represented as an Option.t
type value := tinclude Bin_prot.Binable.S with type t := t
include Bin_prot.Binable.S_only_functions with type t := t
This function only needs implementation if t exposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variant t afterwards.
include Immediate_option.S_without_immediate
with type value := value
and type t := t
include Immediate_option_intf.S_without_immediate_plain
with type t := t
with type value := value
Constructors analogous to None and Some. If not (some_is_representable x) then some x may raise or return none.
For some representations of immediate options, the encodings of none and some overlap. For these representations, some_is_representable value = false if value cannot be represented as an option. For example, Int.Option uses min_value to represent none. For other representations, some_is_representable always returns true.
value (some x) ~default = x and value none ~default = default.
value_exn (some x) = x. value_exn none raises. Unlike Option.value_exn, there is no ?message argument, so that calls to value_exn that do not raise also do not have to allocate.
unchecked_value (some x) = x. unchecked_value none returns an unspecified value. unchecked_value t is intended as an optimization of value_exn t when is_some t is known to be true.
apply_with_none_as_nan (some x) y = apply x y, and apply_with_none_as_nan none y = apply (of_mult Float.nan) y
of_mult_with_nan_as_none Float.nan = none, and of_mult_with_nan_as_none x = some (of_mult x) otherwise
to_mult_with_none_as_nan none = Float.nan, and to_mult_with_none_as_nan (some x) = to_mult x