append3

append([], Bs, Bs).
append([A|As], Bs, [A|Cs]) :-
    append(As, Bs, Cs).

append/3 是最著名的 Prolog 關係之一。它定義了三個引數之間的關係,如果第三個引數是一個表示第一個和第二個引數中指定的列表的串聯的列表,則為 true。

值得注意的是,正如典型的 Prolog 程式碼一樣,append/3 可用於多個方向 :它可用於:

  • 附加兩個完全或部分例項化的列表:

      ?- A = [1, 2, 3], B=[4, 5, 6], append(A, B, Y)
      Output:
      A = [1, 2, 3],
      B = [4, 5, 6],
      Y = [1, 2, 3, 4, 5, 6].
    
  • 檢查三個完全例項化列表的關係是否為真:

      ?- A = [1, 2, 3], B = [4, 5], C = [1, 2, 3, 4, 5, 6], append(A, B, C)
      Output:
      false
    
  • 生成所有可能的方法將兩個列表附加到給定列表:

      ?- append(A, B, [1, 2, 3, 4]).
      Output:
      A = [],
      B = [1, 2, 3, 4] ;
      A = [1],
      B = [2, 3, 4] ;
      A = [1, 2],
      B = [3, 4] ;
      A = [1, 2, 3],
      B = [4] ;
      A = [1, 2, 3, 4],
      B = [] ;
      false.