このディレクトリの索引
#
# 文字列処理に於いて、atom_chars/2の使用を極力減らしたい。
#
# ?- a_append(X,Y,abcd,L1,[b|R],L3).
# 
# X = a,
# Y = bcd,
# L1 = [a],
# R = [c,d],
# L3 = [a,b,c,d].
# yes.
# ?- 
#
#

a_append(Atom1,Atom2,Atom3,L1,L2,L3) :- 
        var(Atom1),
        var(Atom2),
        atomic(Atom3),
        atom_chars(Atom3,L3),
        append(L1,L2,L3),
        atom_chars(Atom1,L1),
        atom_chars(Atom2,L2).
a_append(Atom1,Atom2,Atom3,L1,L2,L3) :- 
        atomic(Atom1),
        var(Atom2),
        atomic(Atom3),
        atom_chars(Atom1,L1),
        atom_chars(Atom3,L3),
        append(L1,L2,L3),
        atom_chars(Atom2,L2).
a_append(Atom1,Atom2,Atom3,L1,L2,L3) :- 
        var(Atom1),
        atomic(Atom2),
        atomic(Atom3),
        atom_chars(Atom3,L3),
        atom_chars(Atom2,L2),
        append(L1,L2,L3),
        atom_chars(Atom1,L1).
a_append(Atom1,Atom2,Atom3,L1,L2,L3) :- 
        atomic(Atom1),
        var(Atom2),
        var(Atom3),
        atom_chars(Atom1,L1),
        append(L1,L2,L3),
        atom_chars(Atom3,L3),
        atom_chars(Atom2,L2).
a_append(Atom1,Atom2,Atom3,L1,L2,L3) :- 
        var(Atom1),
        var(Atom2),
        var(Atom3),
        append(L1,L2,L3),
        atom_chars(Atom1,L1),
        atom_chars(Atom3,L3),
        atom_chars(Atom2,L2).