2

私はProlog Tutorial 2.1に従っています。

プログラム

adjacent(1, 2).
adjacent(1, 3).
adjacent(1, 4).

main:-
    adjacent(1, R),
    write(R).

印刷し2ます。

ただし、チュートリアルに従って、可能な値のリストを出力することを想定しています。

?- adjacent(1,2). 
yes 
?- adjacent(1,3). 
no 
?- adjacent(1,R). 
R = 2 ; 
R = 3 ; 
R = 4 ; 
no

同じ結果を得るためにのみ repl で再試行します。

?- adjacent(1, R).
R = 2 .

変数の可能な値のリストを取得/印刷するにはどうすればよいですか?

4

3 に答える 3

1

swipl では、library( apply ) はデフォルトで自動ロードされるため、次のように記述できます。

main:-
     forall (adjacent(1, R), (write(R),nl))。

注: アクションは、必要な適切な構文を説明するためだけのものです。実用的な目的でmain :- forall(adjacent(1, R), writeln(R)).は、より良い可能性があります。

于 2016-05-09T08:38:27.877 に答える