gpt4 book ai didi

prolog - 用户定义的方形谓词

转载 作者:行者123 更新时间:2023-12-02 05:19:11 27 4
gpt4 key购买 nike

我在 Windows 7 上使用 SWI-Prolog V 6.2.3。我编写了以下谓词来计算整数的绝对值和平方:

myabs(X,X):- X > = 0.

myabs(X,Y):- Y is -X.

mysq(X,S):- myabs(X,Y), S is Y * Y.

我收到以下行的错误(运算符(operator)错误):

2 : Prolog does not seem to accept -X.

3 : Prolog does not seem to accept Y * Y (when replaced by 2 * 2, I don't get error)

我知道这些函数有内置谓词,但作为新手,这些是帮助我学习的小程序。

最佳答案

你在规则 1 中有错别字:删除 > 之后的空格

myabs(X,X):- X >= 0.
myabs(X,Y):- Y is -X.
mysq(X,S):- myabs(X,Y), S is Y * Y.

然后,修正后:

?- mysq(-3,X).
X = 9.

您知道平方不需要 myabs 吗?

?- X = -3, Y is X*X.
X = -3,
Y = 9.

编辑 正如@false 指出的那样,myabs/2 也需要更正,以防止在输入为正回溯时出现错误结果。在第二个子句中添加一个守卫可以做到:

myabs(X, Y):- X < 0, Y is -X.

但我更喜欢 if/then/else 结构,即将这两个子句替换为

myabs(X, Y) :- X >= 0 -> Y is X ; Y is -X.

关于prolog - 用户定义的方形谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166913/

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