.. index:: loopp .. _loopp/0: .. rst-class:: right **protocol** ``loopp`` ========= Loop control constructs protocol. | **Availability:** | ``logtalk_load(loops(loader))`` | **Author:** Paulo Moura | **Version:** 1:3:0 | **Date:** 2017-03-20 | **Compilation flags:** | ``static`` | **Dependencies:** | (none) | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: whiledo/2 .. _loopp/0::whiledo/2: ``whiledo/2`` ^^^^^^^^^^^^^ While ``Condition`` is true do ``Action``. | **Compilation flags:** | ``static`` | **Template:** | ``whiledo(Condition,Action)`` | **Meta-predicate template:** | ``whiledo(0,0)`` | **Mode and number of proofs:** | ``whiledo(+callable,@callable)`` - ``zero_or_one`` ------------ .. index:: dowhile/2 .. _loopp/0::dowhile/2: ``dowhile/2`` ^^^^^^^^^^^^^ Do ``Action`` while ``Condition`` is true. | **Compilation flags:** | ``static`` | **Template:** | ``dowhile(Action,Condition)`` | **Meta-predicate template:** | ``dowhile(0,0)`` | **Mode and number of proofs:** | ``dowhile(@callable,+callable)`` - ``zero_or_one`` ------------ .. index:: foreach/3 .. _loopp/0::foreach/3: ``foreach/3`` ^^^^^^^^^^^^^ For each ``Element`` in ``List`` call ``Goal``. | **Compilation flags:** | ``static`` | **Template:** | ``foreach(Element,List,Goal)`` | **Meta-predicate template:** | ``foreach(*,*,0)`` | **Mode and number of proofs:** | ``foreach(@var,+list(term),@callable)`` - ``zero_or_one`` ------------ .. index:: foreach/4 .. _loopp/0::foreach/4: ``foreach/4`` ^^^^^^^^^^^^^ For each ``Element`` in ``List`` at position ``Index`` call ``Goal``. ``Index`` starts at 1. | **Compilation flags:** | ``static`` | **Template:** | ``foreach(Element,Index,List,Goal)`` | **Meta-predicate template:** | ``foreach(*,*,*,0)`` | **Mode and number of proofs:** | ``foreach(@var,@var,+list(term),@callable)`` - ``zero_or_one`` ------------ .. index:: forto/3 .. _loopp/0::forto/3: ``forto/3`` ^^^^^^^^^^^ Calls ``Goal`` counting up from ``First`` to ``Last``. Increment is 1. For convenience, ``First`` and ``Last`` can be arithmetic expressions. Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``forto(First,Last,Goal)`` | **Meta-predicate template:** | ``forto(*,*,0)`` | **Mode and number of proofs:** | ``forto(+number,+number,@callable)`` - ``zero_or_one`` ------------ .. index:: forto/4 .. _loopp/0::forto/4: ``forto/4`` ^^^^^^^^^^^ Calls ``Goal`` counting up from ``First`` to ``Last`` and binding ``Count`` to each successive value. Increment is 1. For convenience, ``First`` and ``Last`` can be arithmetic expressions. Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``forto(Count,First,Last,Goal)`` | **Meta-predicate template:** | ``forto(*,*,*,0)`` | **Mode and number of proofs:** | ``forto(@var,+number,+number,@callable)`` - ``zero_or_one`` ------------ .. index:: forto/5 .. _loopp/0::forto/5: ``forto/5`` ^^^^^^^^^^^ Calls ``Goal`` counting up from ``First`` to ``Last`` and binding ``Count`` to each successive value. For convenience, ``First``, ``Last``, and ``Increment`` can be arithmetic expressions (uses ``Increment`` absolute value). Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``forto(Count,First,Last,Increment,Goal)`` | **Meta-predicate template:** | ``forto(*,*,*,*,0)`` | **Mode and number of proofs:** | ``forto(@var,+number,+number,+number,@callable)`` - ``zero_or_one`` ------------ .. index:: fordownto/3 .. _loopp/0::fordownto/3: ``fordownto/3`` ^^^^^^^^^^^^^^^ Calls ``Goal`` counting down from ``First`` to ``Last``. Decrement is 1. For convenience, ``First`` and ``Last`` can be arithmetic expressions. Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``fordownto(First,Last,Goal)`` | **Meta-predicate template:** | ``fordownto(*,*,0)`` | **Mode and number of proofs:** | ``fordownto(+number,+number,@callable)`` - ``zero_or_one`` ------------ .. index:: fordownto/4 .. _loopp/0::fordownto/4: ``fordownto/4`` ^^^^^^^^^^^^^^^ Calls ``Goal`` counting down from ``First`` to ``Last`` and binding ``Count`` to each successive value. Decrement is 1. For convenience, ``First`` and ``Last`` can be arithmetic expressions. Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``fordownto(Count,First,Last,Goal)`` | **Meta-predicate template:** | ``fordownto(*,*,*,0)`` | **Mode and number of proofs:** | ``fordownto(@var,+number,+number,@callable)`` - ``zero_or_one`` ------------ .. index:: fordownto/5 .. _loopp/0::fordownto/5: ``fordownto/5`` ^^^^^^^^^^^^^^^ Calls ``Goal`` counting down from ``First`` to ``Last`` and binding ``Count`` to each successive value. For convenience, ``First``, ``Last``, and ``Decrement`` can be arithmetic expressions (uses ``Decrement`` absolute value). Fails iff ``Goal`` fails. | **Compilation flags:** | ``static`` | **Template:** | ``fordownto(Count,First,Last,Decrement,Goal)`` | **Meta-predicate template:** | ``fordownto(*,*,*,*,0)`` | **Mode and number of proofs:** | ``fordownto(@var,+number,+number,+number,@callable)`` - ``zero_or_one`` ------------ Protected predicates -------------------- (none) Private predicates ------------------ (none) Operators --------- (none) .. seealso:: :ref:`loop `