gpt4 book ai didi

prolog - 由于 ** 和 ^ 的运算符优先级不同,导致轻微不一致

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

为什么 **/2 的参数优先( xfx ) 和 (^)/2 ( xfy ) 在 Prolog 中不一样?

这会导致轻微的不一致,例如:

?- X = 1, Y is 1 ^ -X.
X = Y, Y = 1.

和:
?- Y is 1 ** -1.
Y = 1.

但:
?- X = 1, Y is 1 ** -X.
ERROR: Syntax error: Operator priority clash
ERROR: X = 1, Y is 1 *
ERROR: ** here **
ERROR: * -X .

最佳答案

@false回答了你的第一个问题。

您给出的示例是由于以下差异:

?- integer(-1).
true.

?- X = 1, integer(-X).
false.

以及以下优先级:
?- current_op(X, xfx, **).
X = 200.

?- current_op(X, fy, -).
X = 200.

关于prolog - 由于 ** 和 ^ 的运算符优先级不同,导致轻微不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390548/

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