リストがあります:
[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 はシーケンスを列挙する準備ができています...