>>293
数値を順に生成するもの。

?- for(1,N,3),write(a),N=3.
aaa

?- for(1,N,3),write(a),fail.
aaa
false

?- for(1,N,3),M is N * 2,write(M),nl,N=3.
2
4
6

?- for(1,N,3),M is N * 2,write(M),nl.
2
N = 1,
M = 2;
4
N = 2,
M = 4;
6
N = 3,
M = 6;
false

% findall/3と併用。組合せや順列の処理の時しばしば使う。

?- findall(N,for(1,N,10),L).
L = [1,2,3,4,5,6,7,8,9,10]