gpt4 book ai didi

syntax - Prolog 参数模式指示器导致输出 false

转载 作者:行者123 更新时间:2023-12-04 07:46:59 24 4
gpt4 key购买 nike

我试图在我的方法( https://www.swi-prolog.org/pldoc/man?section=argmode )的签名中使用 Prolog 的参数模式指示器。
在没有指标的情况下,我的函数按预期工作(例如 palindrome([1,2,1]) 为真):

palindrome(List) :- 
reverse(List, List)
但是当我说
palindrome(+List) :- 
reverse(List, List)
我每次都是假的。我没有收到任何错误或警告。我也尝试了以下但没有运气:
palindrome(+List) :- 
reverse(+List, +List)
所以我很确定我以某种方式错误地使用了这些指标。任何人都可以帮忙吗?我正在使用 SWI-Prolog 和 SWISH 在线 IDE。

最佳答案

是的,错了。您根本不应该在代码中使用它们。只在评论里。+被解释为一个单独的标记:

6 ?- atom(+X).
false.

7 ?- +X =.. Z.
Z = [+, X].

8 ?- +X = + X.
true.

9 ?- +X = '+'(X).
true.
您可以使用 + - 使用谓词定义如您所示,但这毫无意义:
14 ?- [user].
bar(+X,+X).
|:
true.

15 ?- bar( + 1, +Z).
Z = 1.
有些语言确实可以让我们声明模式,就像我认为 Mercury 所做的那样。但不是序言。在 Prolog 中,我们仅将其用作注释,以指导我们对代码的使用和理解。

关于syntax - Prolog 参数模式指示器导致输出 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67157575/

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