gpt4 book ai didi

prolog - 否定中的削减行为

转载 作者:行者123 更新时间:2023-12-02 11:35:56 29 4
gpt4 key购买 nike

由于回溯,以下代码正如预期的那样输出 123:

between(1,3,X), write(X), false.

这个具有剪切输出1,也符合预期:

between(1,3,X), write(X), !, false.

但是这个输出令人惊讶的是123:

between(1,3,X), write(X), not(!).

not(!) 计算结果为 false,因此在某种程度上,它回溯是有意义的,但同时它应该已经剪切,因此没有其他可能性可供探索。

使用 \+ 而不是 not/1 也会发生相同的行为。

为什么削减在被否定时没有任何副作用?例如,not 中的 write/1 与不在其中时具有相同的副作用。

最佳答案

(\+)/1它是一个内置的元调用,并且(引用 !/0 文档)

Meta calling is opaque to the cut.

这些示例,特别是 t4,说明了操作语义

关于prolog - 否定中的削减行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32517857/

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