package soteria

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Soteria_std.Option

Extensions to Stdlib.Option with utility functions.

include module type of struct include Option end

Options

type 'a t = 'a option =
  1. | None
  2. | Some of 'a

The type for option values. Either None or a value Some v.

val none : 'a option

none is None.

val some : 'a -> 'a option

some v is Some v.

val value : 'a option -> default:'a -> 'a

value o ~default is v if o is Some v and default otherwise.

val join : 'a option option -> 'a option

join oo is Some v if oo is Some (Some v) and None otherwise.

val map : ('a -> 'b) -> 'a option -> 'b option

map f o is None if o is None and Some (f v) if o is Some v.

val product : 'a option -> 'b option -> ('a * 'b) option

product o0 o1 is Some (v0, v1) if o0 is Some v0 and o1 is Some v1 and None otherwise.

  • since 5.5
val fold : none:'a -> some:('b -> 'a) -> 'b option -> 'a

fold ~none ~some o is none if o is None and some v if o is Some v.

val iter : ('a -> unit) -> 'a option -> unit

iter f o is f v if o is Some v and () otherwise.

val blend : ('a -> 'a -> 'a) -> 'a option -> 'a option -> 'a option

blend f o1 o2 is o1 if o2 is None, o2 if o1 is None, and Some (f v1 v2) if o1 is Some v1 and o2 is Some v2.

  • since 5.5
val for_all : ('a -> bool) -> 'a option -> bool

for_all p behaves like List.for_all p on a list of zero or one element:

  • for_all p None is true,
  • for_all p (Some v) is p v.
  • since 5.5
val exists : ('a -> bool) -> 'a option -> bool

exists p behaves like List.exists p on a list of zero or one element:

  • exists p None is false,
  • exists p (Some v) is p v.
  • since 5.5

Predicates and comparisons

val is_none : 'a option -> bool

is_none o is true if and only if o is None.

val is_some : 'a option -> bool

is_some o is true if and only if o is Some o.

val equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool

equal eq o0 o1 is true if and only if o0 and o1 are both None or if they are Some v0 and Some v1 and eq v0 v1 is true.

val compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int

compare cmp o0 o1 is a total order on options using cmp to compare values wrapped by Some _. None is smaller than Some _ values.

Converting

val to_result : none:'e -> 'a option -> ('a, 'e) result

to_result ~none o is Ok v if o is Some v and Error none otherwise.

val to_list : 'a option -> 'a list

to_list o is [] if o is None and [v] if o is Some v.

val to_seq : 'a option -> 'a Seq.t

to_seq o is o as a sequence. None is the empty sequence and Some v is the singleton sequence containing v.

Syntax

module Syntax = Option.Syntax

Binding operators. See manual section 12.23 for details.

val return : 'a -> 'a option

The monad equivalent of some

val bind : ('a -> 'b option) -> 'a option -> 'b option

The bind operator; we swap it to match the usual order of arguments for monads.

val bind2 : ('a -> 'b -> 'c t) -> 'a t -> 'b t -> 'c t

Bind a function over two options.

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Map a function over two options.

val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t

Merge two options using a function to combine values if both are present.

val or_ : 'a t -> 'a t -> 'a t

or_ x y returns x if it is some, otherwise returns y. Equivalent to merge (fun l _ -> l)

val get : ?msg:??? -> 'a t -> 'a

Get the value of an option.

val of_bool : bool -> unit t

Convert a boolean to an option.

val is_some_and : ('a -> bool) -> 'a t -> bool

true if the option is Some x and f x is true, otherwise false.