清單
列表是一種特殊的複合詞。列表是歸納定義的:
- 原子
[]是一個列表,表示空列表。 - 如果
Ls是一個列表,則術語'.'(L, Ls)也是一個列表。
在 Prolog 中有一種特殊的語法可以方便地表示列表:
- 列表
'.'(a, '.'(b, '.'(c, [])))也可以寫成[a,b,c]。 - 術語
'.'(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]]].