清單
列表是一種特殊的複合詞。列表是歸納定義的:
- 原子
[]
是一個列表,表示空列表。 - 如果
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]]].