Я следую Prolog Tutorial, чтобы узнать Prolog.Prolog: распечатать значение переменной во время исполнения
Эта часть кода загружается factorial
программа в REPL и получите результат factorial
function from 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
Ничего распечатано. Так что я добавить write(var).
к main
: ошибка
main:-
factorial(10, var).
write(var).
ПОЛУЧАЕТЕ:
ERROR: /SomeFolder/factorial.pl:11: No permission to modify static procedure `write/1'
Как распечатать значение переменной во время выполнения?
(1) Переменные должны начинаться с заглавной буквы. поэтому 'var' должен быть' Var'. (2) У вас есть период после 'factorial (10, Var)' вместо запятой. – lurker
@lurker Uh ... 'Singleton variables: [Var]' – Wentao
Вы не получите «одиночную переменную», предупреждающую о вас (1) измените BOTH экземпляры 'var' на' Var' и (2) используйте запятую вместо период после 'factorial (10, Var)'. Следуйте всем инструкциям. :) – lurker