prolog - call/1 和 normal 子句有什么区别?

标签 prolog call

如果我有 :

 run(X) :- X.

有什么区别:
... :- ..., call(Y).

和 :
... :- ..., run(Y).

最佳答案

如果你有:

运行(X):- X。

那么你可以看到它相当于使用了call/1明确通过

?- 列表(运行/1)。
运行(A):-
调用(A)。

由此可知call(X)也声明性地等效于 run(X) .但是,除非您的 Prolog 编译器执行某种内联,否则使用 call/1几乎可以肯定,直接比调用 run/1 至少非常非常有效。并调用 call/1 .

作为思考的食物,想想像 run(!) 这样的案例。 ,以及一般如何使用 !如果 X,在元调用中可能会影响程序不等于 call(X) .

关于prolog - call/1 和 normal 子句有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652069/

相关文章:

prolog - 如何在SWI-Prolog中编写可选

list - Prolog:计算列表中的正元素

vector - 如何将 Prolog CLP(R) 与实向量连接?

prolog - 如何查找数据库中所有prolog规则

prolog - 非平凡的 Prolog 查找和替换

javascript - 为什么我们不能在 setTimeout 上调用和应用?

python - 调用类内部的函数来设置列表的元素

java:获取 sqlexception 消息 "incorrrect syntax near ' {' "

c# - 如何检测udpclient何时收到数据?

javascript - 'call' 在 javascript 中如何工作?