L = [a、b、c|_]。-不完全なリストの例。これらのうち2つを追加するにはどうすればよいですか?不完全なリストを元に戻すにはどうすればよいですか?誰かが私にこれらの一般的な対処方法のヒントを教えてもらえますか?
append([x | t]、y、[x | r]):-append(t、y、r)。これは、2つのリストが追加される方法です。
L = [a、b、c|_]。-不完全なリストの例。これらのうち2つを追加するにはどうすればよいですか?不完全なリストを元に戻すにはどうすればよいですか?誰かが私にこれらの一般的な対処方法のヒントを教えてもらえますか?
append([x | t]、y、[x | r]):-append(t、y、r)。これは、2つのリストが追加される方法です。
例えば
?- A=[1,2,3|X], B=[a,b,c|Y], X=B.
A = [1, 2, 3, a, b, c|Y],
X = B, B = [a, b, c|Y].
これらのパターンはほとんど役に立ちません。
@Daniel Lyonsが示唆しているように、append/3を使用することもできます
?- A=[1,2,3|X], B=[a,b,c|Y], append(A,B,C).
A = [1, 2, 3],
X = [],
B = [a, b, c|Y],
C = [1, 2, 3, a, b, c|Y]
これらのパターンの違いを確認できます。最初にXをBに直接バインドし(1つの推論)、appendは、バインドする前にテールに到達するために、最初のリストの長さに等しい数の推論を必要とします。
不完全なデータ構造について詳しくは、こちらをご覧ください。最も有用なパターンはdifference lists
、dcgのベースです。