0

次の2つのリストの違いがちょっと混乱しています。

K = [1,2,3 | X].

K = [1,2,3,X].

Bratko の本の質問は、実際にはconc.

conc は次のように定義されます。

conc([], L, L).
conc([X|L1], L2, [X|L3]) :- conc(L1, L2, L3).

現在の実際の問題は、

conc([1,2,3], [X], L2).

L2 はクエリの K と同じリストです K = [1,2,3|X].

L2 と K は同じではないと思いますが、説明の仕方がよくわかりません。L2 は 2 つのリストの連結です。K は、リストで入力できる変数 X と、よくわからないものを連結したものです...

まだ Prolog を学習中なので、これが「ばかげた」質問である場合はご容赦ください。

4

1 に答える 1

2

Prolog では、各リストは空のリスト ( []) または頭と尾 ( [A | X]) のいずれかです。Head は最初の要素で、tail は残りのリストです。

例:

  • [1]実際には[1 | []]
  • [1, 2][1 | [2 | []]]
  • [1,2,3 | [4, 5]]と同じです[1,2,3,4,5](4 要素リストとは異なります[1,2,3,[4,5]])。

したがって、あなたの例L2では[1,2,3,X]、最後の要素を持つ4つの要素リストXです。一方、 Kis はand[1,2,3|X]で始まり、1,2,3のすべての要素を持つリストですX

[1,2,3,X]次の図は、との構造の違いを示しています[1,2,3|X][1,2,3,X] 対 [1,2,3|X]

于 2013-10-20T15:27:56.160 に答える