所以我被告知一个特定的谓词必须在+,+模式下工作。 Prolog中的含义是什么?Prolog中的+,+模式是什么意思?
回答
当人给在序言谓词信息,这些公约通常用于:
元数:谓词/ 3装置谓词接受3个参数。
参数:谓词(+元素,+列表,结果)表示元素和列表不应该是自由变量,并且结果应该是一个自由变量,以便谓词正常工作。 ?在可以同时使用时,@在上面的答案中被提及,但并未真正被使用(至少在swi-pl doc中)并且意味着在调用期间输入不会被绑定。
所以,告诉somepredicate作品+,+模式是告诉一个快捷方式:
% somepredicate/2 : somepredicate(+Input1, +Input2)
这意味着谓词的参数都是输入参数(尽管不是纯输入)。
This page对Prolog的所有通话模式都有一个成功的描述。
为了给你,你需要告诉我们的不仅仅是+,+多了肯定的答案。对于参数只有原子的谓词,事情已经很好的定义了:p(+,+)意味着谓词只能用两个参数都是原子来调用。
但是,如果我们有,说清单,事情更复杂。在这种情况下有两个含义。考虑member/2
,其成功为member(2,[1,2,3])
。
查询member(2,[X])
或member(2,[X|Xs])
现在+,+还是不是?
直接解释这也是在ISO Prolog的使用说(报价参数的8.1.2.2模式下,ISO/IEC 13211-1:1995):
+
的参数应该被实例化,
从这个意义上说,上面的两个查询都是+,+。
但是,还有另一种解释隐含地假设我们有权访问谓词的定义。这种解释源于DEC-10 Prolog的模式声明,它是Prolog系统中的第一个。所以,让我们看看member/2
:
member(X, [X|_]).
member(X, [_|Xs]) :-
member(X, Xs).
A模式member(+,+)
现在将意味着执行目标时,此模式将举行所有子目标。也就是说,member(2,[X])
将是+,+而member(2,[X|Xs])
是而不是 ,因为它的子目标member(2,Xs)
。
人们很频繁地混淆这些概念。所以当你谈论列表或其他复合术语时,它有助于询问是什么意思。
欲了解更多模式,请参阅this answer。
- 1. 这个语法是什么意思? (Prolog)
- 2. Prolog中的谓词“simple/1”是什么意思(SWI-Prolog)
- 3. 是什么意思:是什么意思?
- 4. “模糊不清”是什么意思?PATTERN是什么意思?
- 5. adoc模式是什么意思?
- 6. 模式\ d {10}是什么意思?
- 7. Prolog中的这个错误是什么意思?
- 8. “?”是什么意思?调用jsp的标记是什么意思?
- 9. SUMIFS是什么意思,下面给出的表达式是什么意思
- 10. “?”是什么意思?
- 11. $$ $$是什么意思?
- 12. 什么是“||”意思?
- 13. “\\。\”,“\ ?? \”,“\\?\”,“\\”是什么意思?
- 14. “=”是什么意思
- 15. &**是什么意思?
- 16. 是什么意思?
- 17. “_”是什么意思?
- 18. 什么是:!:意思?
- 19. || =是什么意思?
- 20. %%是什么意思?
- 21. =是什么意思?
- 22. %{}是什么意思?
- 23. + =是什么意思?
- 24. '#'是什么意思?
- 25. /([^.]*)\.(.*)/是什么意思?
- 26. %*是什么意思?
- 27. &@是什么意思?
- 28. pygame中的混合模式是什么意思?
- 29. '@ */grunt- *'glob模式中的@符号是什么意思?
- 30. 这是什么意思的HTML形式?
另请参阅[this](http://stackoverflow.com/q/19268558/1153801)问题。 – SND