私はProlog Tutorialの後にPrologを学びます。Prolog:実行中に変数の値を出力します
このコードは、factorial
プログラムをREPLにロードし、factorial
の結果をWhat
から取得します。
?- ['factorial.pl']. /* 1. Load a program from a local file*/
true.
?- listing(factorial/2). /* 2. List program to the screen*/
factorial(0,1).
factorial(A,B) :-
A > 0,
C is A-1,
factorial(C,D),
B is A*D.
>true.
?- factorial(10,What). /* 3. Compute factorial of 10 */
What=3628800
今私はプログラムで印刷結果を持っているし、スクリプトとして、それを実行する:
factorial(0,1).
factorial(A,B) :-
A > 0,
C is A-1,
factorial(C,D),
B is A*D.
main:-
factorial(10, var).
$ swipl -q -f factorial.pl -t main
何も印刷されません。だから私はmain
にwrite(var).
を追加します。
main:-
factorial(10, var).
write(var).
は、エラーを取得する:
ERROR: /SomeFolder/factorial.pl:11: No permission to modify static procedure `write/1'
は、私は、実行時に変数の値をプリントアウトするにはどうすればよいですか?
(1)変数は大文字で始まります。 'var'は' Var'でなければなりません。 (2)コンマではなく、階乗(10、Var)の後にピリオドがあります。 – lurker
@lurker Uh ... 'シングルトン変数:[Var]' – Wentao
(1)インスタンスを 'var 'から' Var'に変更し、(2)代わりにカンマを使用する'factorial(10、Var)'の後のピリオド。すべての指示に従ってください。 :) – lurker