このディレクトリの索引
%
%  文字列置換には、
%  1) 一ヶ所書き換えたらそれで終わり
%  2) 複数置換可能の箇所かあれば、全部書き換える
%  3) 先頭から書き換え可能の部分を順にさらに次の書き換え候補を置換しに行くか
%     問い合わせながら置換する
%  4) 先頭から書き換え可能の部分を書き換えてみるが、外部からtrueの指示が
%     ない場合は、元に戻して次の候補に進む。
%  の三方式が考えられる。ここではその 3)の「非決定的に順に置換する」を定義する。
%

文字列を非決定的に順に置換する(_文字列,_置換対象副文字列,_置換文字列,_置換された文字列) :-
        sub_atom(_文字列,S,Len,R,_置換対象文字列),
        sub_atom(_文字列,0,S,_前文字列),
        sub_atom(_文字列,_,R,0,_後文字列),
        文字列を非決定的に順に置換する(_文字列,_置換対象文字列,_置換文字列,_前文字列,_後文字列,_置換された文字列).
文字列を非決定的に順に置換する(_文字列,_,_,_文字列).

文字列を非決定的に順に置換する(_文字列,_置換対象文字列,_置換文字列,_前文字列,_後文字列,_置換された文字列) :-
        atomic_list_concat([_前文字列,_置換文字列,_後文字列],_置換された文字列).
文字列を非決定的に順に置換する(_文字列,_置換対象文字列,_置換文字列,_前文字列,_後文字列,_置換された文字列) :-
        文字列を非決定的に順に置換する(_後文字列,_置換対象副文字列,_置換文字列,_置換された後文字列),
        atomic_list_concat([_前文字列,_置換文字列,_置換された文字列_2],_置換された後文字列).