**protocol**

`loopp`

¶

Loop control constructs protocol.

**Author:**Paulo Moura

**Version:**1:3:0

**Date:**2017-03-20

**Compilation flags:**

`static`

**Dependencies:**

**Remarks:**

**Inherited public predicates:**

## Public predicates¶

`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`

`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`

`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`

`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`

`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`

`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`

`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`

`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`

`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`

`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)