object

# `coroutining`

Coroutining predicates.

Availability:
`logtalk_load(coroutining(loader))`
Author: Paulo Moura
Version: 0:5:0
Date: 2021-12-17
Compilation flags:
`static, context_switching_calls`
Dependencies:
(none)
Remarks:

> - Supported backend Prolog systems: ECLiPSe, LVM, SICStus Prolog, SWI-Prolog, Trealla Prolog, and YAP.

Inherited public predicates:
(none)

## Public predicates

### `dif/2`

Sets a constraint that is true iff the two terms are different.

Compilation flags:
`static`
Template:
`dif(Term1,Term2)`
Mode and number of proofs:
`dif(+term,+term)` - `zero_or_one`

### `dif/1`

Sets a set of constraints that are true iff all terms in a list are different.

Compilation flags:
`static`
Template:
`dif(Terms)`
Mode and number of proofs:
`dif(+list(term))` - `zero_or_one`

### `freeze/2`

Delays the execution of a goal until a variable is bound.

Compilation flags:
`static`
Template:
`freeze(Variable,Goal)`
Meta-predicate template:
`freeze(*,0)`
Mode and number of proofs:
`freeze(+term,+callable)` - `zero_or_more`

### `frozen/2`

Unifies `Goal` with the goal delayed by `Variable`. When no goals are frozen on `Variable`, `Goal` is unified with true.

Compilation flags:
`static`
Template:
`frozen(Variable,Goal)`
Mode and number of proofs:
`frozen(@var,--callable)` - `one`

### `when/2`

Calls `Goal` when `Condition` becomes true. The portable conditions are: `nonvar/1`, `ground/1`, `(,)/2`, and `(;)/2`.

Compilation flags:
`static`
Template:
`when(Condition,Goal)`
Meta-predicate template:
`when(*,0)`
Mode and number of proofs:
`when(+callable,+callable)` - `zero_or_more`

## Protected predicates

(none)

## Private predicates

(none)

## Operators

(none)