1
1:如果一個查詢即ie。 a(X).
返回多個答案,我如何讓程序一次返回所有答案和跟蹤。如何在swipl上運行prolog並一次返回所有跟蹤
2:我如何可以運行一個程序自動matically即打印a(X).
所有的答案,當我comman後,裝載.pl
文件到swipl即
% swipl -f foo.pl
然後返回X
謝謝
1:如果一個查詢即ie。 a(X).
返回多個答案,我如何讓程序一次返回所有答案和跟蹤。如何在swipl上運行prolog並一次返回所有跟蹤
2:我如何可以運行一個程序自動matically即打印a(X).
所有的答案,當我comman後,裝載.pl
文件到swipl即
% swipl -f foo.pl
然後返回X
謝謝
你需要leash以及跟蹤
swipl -s f.pl -g "leash(-all),trace,numbers(X),print(X),nl,fail." -t halt
% /home/carlo/.plrc compiled 0.04 sec, 1,439 clauses
% /home/carlo/prolog/f.pl compiled 0.00 sec, 2 clauses
Call: (6) numbers(_G1453)
Call: (7) between(1, 10, _G1453)
Exit: (7) between(1, 10, 1)
Exit: (6) numbers(1)
Call: (6) print(1)
1
Exit: (6) print(1)
Call: (6) nl
Exit: (6) nl
Call: (6) fail
Fail: (6) fail
Redo: (7) between(1, 10, _G1453)
Exit: (7) between(1, 10, 2)
Exit: (6) numbers(2)
Call: (6) print(2)
2
Exit: (6) print(2)
...
下面是一個簡單的文件,用簡單的條款:
$> cat f.pl
numbers(X) :-
between(1,10,X).
您可以使用設定的目標-g
選項:
$> swipl -s f.pl -g "numbers(X),print(X),nl,fail." -t halt.
% .../f.pl compiled 0.00 sec, 2 clauses
1
2
3
4
5
6
7
8
9
10
我如何獲得所有的痕跡呢?我試過 swipl -s f.pl -g「trace,numbers(X),print(X),nl,fail。」 - 停止。 但它確實需要我按下輸入 – Newyo 2013-02-21 21:15:46