gpt4 book ai didi

prolog - 剪切(!)与返回

转载 作者:行者123 更新时间:2023-12-01 11:53:42 27 4
gpt4 key购买 nike

我正在 Prolog 中开发一个谓词,它有可能在它结束之前终止。
出于这个原因,我正在寻找类似于 return; 的命令。 (C++)。我用了 cut !但我怀疑它的字面意思以及它是否确实做了什么return;做。前任:

pred(X) :- 
X = 1 -> do this, !; else do that,
write('x =/= 1').

void pred(int X) {
if (X = 1) {do this; return;} else do that;
cout << "x =/= 1";
}

上面的功能完全一样吗?

最佳答案

Prolog 的执行机制与传统命令式语言的执行机制没有直接对应关系。因此,任何类比都会使您走上死路。

在您的示例中,剪切没有任何影响:(->)/2单独将已经排除 Else分支。从某种意义上说,它在 If 上做了一个“微小”的切割。和替代方案。 pred/1是否有其他条款? ,你的切割也会排除那个分支。

Prolog 的执行机制要复杂得多。如果您坚持在命令式语言中进行类比,请考虑迭代器。切割导致切割范围内的所有迭代器在下一个 next 上产生一个 done .所以有点像break .有些。但仅限于首先支持迭代器的语言。

如果你想学习 Prolog,不要试图从这些(半) splinter 的类比中发展你的概念。

最好从想象 Prolog 谓词描述的关系开始,并从中近似谓词的含义。程序性概念将一一适用。

关于prolog - 剪切(!)与返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803995/

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