.. index:: coroutining .. _coroutining/0: .. rst-class:: right **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) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: dif/2 .. _coroutining/0::dif/2: ``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`` ------------ .. index:: dif/1 .. _coroutining/0::dif/1: ``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`` ------------ .. index:: freeze/2 .. _coroutining/0::freeze/2: ``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`` ------------ .. index:: frozen/2 .. _coroutining/0::frozen/2: ``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`` ------------ .. index:: when/2 .. _coroutining/0::when/2: ``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)