我正在按照Prolog教程来学习Prolog。
这段代码在REPL中加载factorial
程序,并从What
中获取factorial
函数的结果。
?- ['factorial.pl']。/* 1.从本地文件加载程序*/
true.
?- 列出(factorial/2)。 /* 2. 在屏幕上列出该程序 */
factorial(0,1).
factorial(A,B) :-
A > 0,
C is A-1,
factorial(C,D),
B is A*D.
>true.
?- factorial(10,What). /* 3. 计算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).
出现错误:
错误:/SomeFolder/factorial.pl:11: 无权修改静态过程“write/1”
如何在执行期间打印变量值?
var
应该改为Var
。 (2) 在factorial(10, Var)
后面应该是逗号而不是句号。 - lurker单例变量:[Var]
- Rahn