object

maybe

Types and predicates for type-checking and handling optional terms. Inspired by Haskell.

Availability:
logtalk_load(optionals(loader))
Author: Paulo Moura
Version: 0:9:0
Date: 2025-06-19
Compilation flags:
static, context_switching_calls
Remarks:
  • Type-checking support: Defines type maybe(Type) for checking optional terms where the value hold by the optional term must be of the given type.

  • QuickCheck support: Defines clauses for the arbitrary::arbitrary/1-2, arbitrary::shrinker/1, arbitrary::shrink/3, and arbitrary::edge_case/2 predicates to allow generating random values for the maybe(Type) type.

Inherited public predicates:
(none)

Public predicates

cat/2

Returns the values stored in the non-empty optional terms.

Compilation flags:
static
Template:
cat(Optionals,Values)
Mode and number of proofs:
cat(+list(optional),-list) - one

sequence/2

Returns an optional term with a list of all values when all optional terms are not empty. Otherwise returns an empty optional term.

Compilation flags:
static
Template:
sequence(Optionals,Optional)
Mode and number of proofs:
sequence(+list(optional),--nonvar) - one

traverse/3

Applies a closure to each list element to generate optional terms and then sequences them into a single optional term holding all values or an empty optional term.

Compilation flags:
static
Template:
traverse(Closure,Terms,Optional)
Meta-predicate template:
traverse(2,*,*)
Mode and number of proofs:
traverse(+callable,+list,--nonvar) - one

Protected predicates

(no local declarations; see entity ancestors if any)

Private predicates

(no local declarations; see entity ancestors if any)

Operators

(none)