このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328439334/383
#  すいません質問なんですが、一行ごとに文字の表示が増えるプログラムを作る場合はfor文を3重にするのでしょうか? 
#  なんか違う様な気がするのですが、2重だといまいち組み方がわかりません ご教授お願いします 
#   
#  ABC 
#  ABC ABC 
#  ABC ABC ABC 
#  こんなかんじです 
# 
# 

一行ごとに表示要素数が増える :-
        一行ごとに表示要素数が増える('ABC',' ',5).

一行ごとに表示要素数が増える(_表示要素,_区切り要素,_最大表示回数) :-
        length(L,_最大表示回数),
        all(L0,_表示要素),
        一行ずつ要素を増やしながら行表示(L,_区切り要素).

一行ずつ要素を増やしながら行表示(L,_区切り要素) :-
        append(L0,_,L),
        要素ならびを行表示(L0,_区切り要素),
        L0 = L.

要素ならびを行表示([],_) :- !.
要素ならびを行表示(L0,_区切り要素) :-
        concat_atom(L0,_区切り要素,_表示行),
        writef('%t\n',[_表示行]).

all([],_).
all([V|R],V) :-
        all(R,V).

%  all/2 についてはユーティリティとして起動ファイルに含めてロードしておく
%  要素ならびを行表示([],_) :- !. が案外大事。
%  ?- append(L0,_,[abc,abc,abc,abc,abc]). の最初の解 L0 = [] これを
%  ?- concat_atom([],' ',_表示行). してしまうと空文字列を一行印字することになり
%  結果として改行してしまう。
%  これを回避するため
%  要素ならびを行表示([],_) :- !. がある。
%