For in Prolog
Prolog offers several ways to implement loops and iterations. Here are some basic types of loops in Prolog.
% The most basic type, with a single condition.
loop_basic(I) :-
I =< 3,
writeln(I),
I1 is I + 1,
loop_basic(I1).
loop_basic(1).
% A classic initial/condition/after loop.
loop_classic(J) :-
between(0, 2, J),
writeln(J).
% Another way of accomplishing the basic "do this N times" iteration.
loop_range(N) :-
between(0, 2, I),
format('range ~w~n', [I]),
N is I + 1.
% Loop without a condition will repeat until a condition is met.
loop_infinite :-
writeln('loop'),
!.
% You can also use cuts to control the flow of the loop.
loop_continue(N) :-
N < 6,
( N mod 2 =:= 0
-> N1 is N + 1,
loop_continue(N1)
; writeln(N),
N1 is N + 1,
loop_continue(N1)
).
loop_continue(_).
% Main predicate to run all examples
main :-
loop_basic(1),
loop_classic(_),
loop_range(_),
loop_infinite,
loop_continue(0).To run the program, you can save it in a file (e.g., for_loops.pl) and use a Prolog interpreter. Here’s an example of how to run it using SWI-Prolog:
$ swipl -s for_loops.pl -g main -t halt
1
2
3
0
1
2
range 0
range 1
range 2
loop
1
3
5In Prolog, loops are typically implemented using recursion. The loop_basic/1 predicate demonstrates a simple recursive loop. The loop_classic/1 uses the between/3 predicate to iterate over a range of values.
The loop_range/1 predicate shows another way to iterate over a range, similar to the range-based for loop in other languages.
The loop_infinite/0 predicate demonstrates an “infinite” loop that’s immediately cut short with the ! (cut) operator.
Finally, the loop_continue/1 predicate shows how to implement a loop with a continue-like behavior using conditional statements and recursion.
These examples demonstrate various ways to achieve looping behavior in Prolog, which uses a different paradigm compared to imperative languages. The logic and flow control in Prolog are based on predicate success or failure and backtracking, rather than explicit loop constructs.
Comments powered by Disqus