gpt4 book ai didi

Prolog:在执行期间打印出变量的值

转载 作者:行者123 更新时间:2023-12-04 19:38:25 24 4
gpt4 key购买 nike

我正在关注 Prolog Tutorial学习序言。

这段代码加载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



什么都没打印出来。所以我添加 write(var).main :
main:-
factorial(10, var).
write(var).

得到错误:

ERROR: /SomeFolder/factorial.pl:11: No permission to modify static procedure `write/1'



如何在执行期间打印出变量值?

最佳答案

在定义谓词时,不应有“.”除非你结束它。您应该使用“,”来代替。
正确的代码是——
主要的:-
阶乘(10,Var),
写($Var)。
还要注意变量。在 prolog 中,您应该以大写形式键入变量的名称,否则,它们将被视为谓词。另请参阅在使用 write predicate 打印 Var 时,我在 Var 之前使用了 $。如果 $ 符号不存在,write 函数将打印 Var 的内存位置而不是它的值

关于Prolog:在执行期间打印出变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com