このディレクトリの索引

リストになっている行データを逆順に表示する([]).
リストになっている行データを逆順に表示する([_行|R]) :-
        リストになっている行データを逆順に表示する(R),
        writef('%t\n',[_行]).


ファイルから行を逆順に収集する(_ファイル名,_逆順に収集された行リスト) :-
        open(_ファイル名,read,Instream),
        ファイルから行を逆順に収集する(Instream,[],_逆順に収集された行リスト),
        close(Instream).

ファイルから行を逆順に収集する(Instream,_逆順に収集された行リスト,_逆順に収集された行リスト) :-
        at_end_of_stream(Instream),!.
ファイルから行を逆順に収集する(Instream,_逆順に収集された行リスト_1,_逆順に収集された行リスト) :-
        get_line(Instream,Line),
        ファイルから行を逆順に収集する(Instream,[Line|_逆順に収集された行リスト_1],_逆順に収集された行リスト).


ファイルから読み取った行を逆順に別ファイルに書き込む(_ファイル名,_別ファイル名) :-
        open(_ファイル名,read,Instream),
        open(_別ファイル名,write,Outstream),
        ファイルから行を逆順に収集する(Instream,Outstream,[],_逆順に収集された行リスト),
        close(Outstream),
        close(Instream).

ファイルから読み取った行を逆順に別ファイルに書き込む(Instream,Outstream) :-
        at_end_of_stream(Instream),!.
ファイルから読み取った行を逆順に別ファイルに書き込む(Instream,Outstream,_逆順に収集された行リスト_1,_逆順に収集された行リスト) :-
        get_line(Instream,Line),
        ファイルから読み取った行を逆順に別ファイルに書き込む(Instream,Outstream),
        writef(Outstream,'%t\n',[Line]).


%%%%% 入力がリスト 出力がリストなのが reverse/2 reverse/3 これは組込述語であることが多い。

reverse(L1,L2) :-
        reverse(L1,[],L2).

reverse([],L,L).
reverse([A|R],L1,L) :-
        reverse(R,[A|L1],L).