---
name: "Stdlib.Option"
section: "3o"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Stdlib.Option"
---

# Stdlib.Option(3o)

no description

## NAME

Stdlib.Option - no description

## Module

Module   Stdlib.Option

## Documentation

Module **Option**\
  :  **(module Stdlib\_\_Option)**

### Options

*type* **'a** *t* =  **'a option** =\
  \| None\
  \| 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 get* :  **'a option -\> 'a**

**get o** is  **v** if  **o** is  **Some v** and raise otherwise.

**Raises Invalid\_argument** if  **o** is  **None** .

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

**bind o f** is  **f v** if  **o** is  **Some v** and  **None** if  **o** is  **None** .

*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 :* **sig end**

Binding operators. See manual section 12.23 for details.

**Since** 5.5
