我开始学习Prolog,但是我找不到任何关于我想做什么的例子:包含其他几个列表的列表;有可能吗?
像这样:[ [1,1,1], [2,2,2], [3,3,3] ]
。
提前谢谢。
答案 0 :(得分:3)
尝试在提示X = [ [1,1,1], [2,2,2], [3,3,3] ].
处输入内容。 Prolog会将其输入给您 - 即它接受此作为有效输入。
以下是指定相同列表X
的所有不同方法:
X = [ [1,1,1], [2,2,2], [3,3,3] ].
X = [ [1,1,1], [2,2,2] | [ [3,3,3] ] ].
X = [ [1,1,1] | [ [2,2,2], [3,3,3] ] ].
A = [1,1,1], X = [A | [ [2,2,2], [3,3,3] ] ].
A = [1,1,1], B = [ [2,2,2], [3,3,3] ], X = [A | B].
A = [1 | T], T = [1,1], B = [ [2,2,2], [3,3,3] ], X = [A | B].
T = [1,1], B = [ [2,2,2], [3,3,3] ], X = [A | B], A = [1 | T].
这显示了如何按位组构构建列表。没有"递归"所需要的,只是简单的规范和结构;或者结构和规格,顺序无关紧要。
答案 1 :(得分:1)
好的,所以我设法做了以下事情:
?- findall([NAME,POST,TIMEFLIGHT], pilot(_,NAME,POST,_,_,TIMEFLIGHT,_), Xs),
show(Xs).
show([]):-!.
show([Head|Tail]):-
write(Head),nl,
show(Tail).
这给了我想要的东西,这是:
Xs = [ [Joe, Pilot, 100], [Stan, Co-Pilot, 300], [Steve, Pilot, 150] ].
答案 2 :(得分:0)
Prolog在列表中非常“开放”。列表的一些示例和定义列表的方法:
?- X=[1,[a]].
X = [1, [a]].
?- X='.'(1,[2]).
X = [1, 2].
?- X=[1|foo].
X = [1|foo].