我有一个清单:
[a,b,c]
我想像这样打印列表:
a -> b
b -> c
到目前为止,我有这个代码:
print([]).
print([H|T]) :- write(H), write(' -> '), nl, print(T).
这将产生以下结果:
a ->
b ->
c ->
我有一个清单:
[a,b,c]
我想像这样打印列表:
a -> b
b -> c
到目前为止,我有这个代码:
print([]).
print([H|T]) :- write(H), write(' -> '), nl, print(T).
这将产生以下结果:
a ->
b ->
c ->
您的谓词需要从列表中拉出更多项目。尝试:
print([]).
print([_]). % if we're trying to print pairs, we can't print a single item
print([X,Y|T]) :- write(X), write(' -> '), write(Y), nl, print([Y|T]).
您可以考虑将逻辑(尽管很少)与 IO 分开:
pairs([A,B|T], P) :- P = (A,B) ; pairs([B|T], P).
printp(L) :- forall(pairs(L, (A,B)), writeln(A->B)).
这样,pairs/2 就可以枚举你的序列了,以防你需要做......