object

# `optional`

Constructors for optional term references. A reference is either empty or holds a term. References should be regarded as opaque terms and always used with the “optional(_)” object by passing the reference as a parameter.

Author: Paulo Moura
Version: 1.4
Date: 2019/1/23
Compilation flags:
`static, context_switching_calls`
Provides:
type::type/1
type::check/2

## Public interface

### `empty/1`

Constructs an empty reference.

Compilation flags:
`static`
Template:
`empty(Reference)`
Mode and number of proofs:
`empty(--nonvar)` - `one`

### `of/2`

Constructs a reference holding a term.

Compilation flags:
`static`
Template:
`of(Term,Reference)`
Mode and number of proofs:
`of(@term,--nonvar)` - `one`

### `from_goal/3`

Constructs a reference by calling Goal that binds and holds Term on success. Returns an empty reference if the goal fails or throws an error.

Compilation flags:
`static`
Template:
`from_goal(Goal,Term,Reference)`
Meta-predicate template:
`from_goal(0,*,*)`
Mode and number of proofs:
`from_goal(+callable,--term,--nonvar)` - `one`

## Protected interface

(see related entities)

## Private predicates

(see related entities)

## Operators

(none)

## Remarks

- Type-checking support: This object also defines a type “optional” for use with the “type” library object.

See also

optional(Reference), type