变量如何在Prolog中传输?

时间:2019-05-29 08:55:07

标签: prolog

我有一个函数正方形,我想显示一个这样的矩阵:

XXX (newline)
XXX (newline)
XXX 

打印第一行后,我的结果为假。为什么?变量如何在Prolog中传输,行如何执行(排序)?

line(Rez,X) :- Rez>=1 , write(X) , line(Rez-1,X).

square(N,X) :- Rez = N,line(Rez,X),nl,N>1,square(N-1,X).

1 个答案:

答案 0 :(得分:1)

您的代码有几个问题。值得注意的是,您正在编写没有基本案例的递归谓词定义。另一个问题是Prolog不是功能语言。当你写例如line(Rez-1,X),Prolog不会将Rez-1评估为算术表达式。对于Prolog,Rez-1只是一个'-'/2复合术语,即名称为-和两个参数的术语。您将需要编写类似NextRez is Rez-1, line(NextRez,X)的内容。 is/2标准内置谓词评估其第二个参数(作为算术表达式),并将结果与​​第一个参数统一。