0
我有一個列表:序言寫列表
[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)).
這樣對/ 2是準備好你的枚舉順序,如果你需要做的..
太好了。謝謝 :) – pvl 2013-05-05 21:53:17