在序言中计算

发布于 2024-10-03 23:24:46 字数 45 浏览 6 评论 0原文

我知道在序言中我们要求的是真还是假, 我们还可以计算平均值以及谓词的样子吗?

I know in prolog we ask for is that true or false ,
can we also do compute for example average and how the predicate look like?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妄司 2024-10-10 23:24:46

当然,您可以计算数字列表的平均值,谓词将如下所示:

average(List, Result) :- length(List, Len), sum(List, Sum), Result is Sum / Len.

sum([], 0).
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.

然后您会得到:

?- average([1, 2, 3], X).
X = 2.

Of course you can compute the average of a list of numbers and the predicate would look like this:

average(List, Result) :- length(List, Len), sum(List, Sum), Result is Sum / Len.

sum([], 0).
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.

Then you get:

?- average([1, 2, 3], X).
X = 2.
镜花水月 2024-10-10 23:24:46

Prolog 不会询问某件事是真是假。这是一个常见的误解。 Prolog 尝试将查询目标与程序谓词统一。如果成功,它将返回对查询中出现的变量的赋值。如果失败 - 这不应该是常见情况 - 它会返回“false”。

至于平均值,请参见3electriclogos的回答。

Prolog does not ask if something is true of false. That is a common misconception. Prolog tries to unify query goals with program predicates. If it succeeds, it returns an assignment to the variables appearing in the query. If it fails - Which is not supposed to be the common case - It returns "false".

As for averages, see 3electrologos' answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文