このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328439334/333
#
#  Prologに於ける文字置換のパターンを示す
#    
#  文字列を検索して、適合パターンを置換していく行全体を置換したら終了
#  

文字列置換(_文字列,_置換された文字列) :-
        置換文字列定義を差分リストに変換する,
        atom_chars(_文字列,Chars),
        ならび置換(Chars,_置換されたChars),
        atom_chars(_置換された文字列,_置換されたChars).

ならび置換([],[]).
ならび置換(L1,L2) :-
        置換ならび定義(L1,R1,L2,R2),
        ならび置換(R1,R2),!.
ならび置換([A|R1],[A|R2]) :-
        ならび置換(R1,R2).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

置換文字列定義を差分リストに変換する :-
        abolish(置換ならび定義/4),
        clause(置換文字列定義(_文字列,_置換する文字列),_本体),
        差分リストを構成する(_文字列,_置換する文字列,L1,R1,L2,R2),
        assertz((置換ならび定義(L1,R1,L2,R2) :- _本体)),
        fail.
置換文字列定義を差分リストに変換する.

差分リストを構成する(_文字列,_置換する文字列,L1,R1,L2,R2) :-
        atom_chars(_文字列,Chars_1),
        atom_chars(_置換する文字列,Chars_2),
        append(Chars_1,R1,L1),
        append(Chars_2,R2,L2).