清單

列表是一種特殊的複合詞。列表是歸納定義的:

  • 原子 [] 是一個列表,表示空列表
  • 如果 Ls 是一個列表,則術語'.'(L, Ls) 也是一個列表。

在 Prolog 中有一種特殊的語法可以方便地表示列表:

  1. 列表'.'(a, '.'(b, '.'(c, []))) 也可以寫成 [a,b,c]
  2. 術語'.'(L, Ls) 也可以寫成 [L|Ls]

這些符號可以以任何方式組合。例如,術語 [a,b|Ls] 是列表 iff Ls 是列表。

建立列表

由與變數 List 統一的文字組成的列表:

?- List = [1,2,3,4].
List = [1, 2, 3, 4].

通過 consing 建立一個列表:

?- Tail = [2, 3, 4], List = [1|Tail].
Tail = [2, 3, 4],
List = [1, 2, 3, 4].

使用內建的 length/2 構建未知值列表:

?- length(List,5).
List = [_G496, _G499, _G502, _G505, _G508].

因為在 Prolog 中,一切本質上都是一個術語,所以列表行為異構:

?- List = [1, 2>1, this, term(X), 7.3, a-A].
List = [1, 2>1, this, term(X), 7.3, a-A].

這意味著列表還可以包含其他列表,也稱為內部列表:

List = [[1,2],[3,[4]]].