所以我被告知一個特定的謂詞必須在+,+模式下工作。 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)
- 3. Prolog中的謂詞「simple/1」是什麼意思(SWI-Prolog)
- 4. 是什麼意思:是什麼意思?
- 5. 「模糊不清」是什麼意思?PATTERN是什麼意思?
- 6. adoc模式是什麼意思?
- 7. 模式\ d {10}是什麼意思?
- 8. 這是什麼意思模式
- 9. Prolog中的這個錯誤是什麼意思?
- 10. 是什麼意思,在Python中是什麼意思?
- 11. 這是什麼##模式在C語言中的意思是
- 12. SURF的min_dist和max_dist是什麼意思,FlannMatcher是什麼意思
- 13. 「?」是什麼意思?調用jsp的標記是什麼意思?
- 14. SUMIFS是什麼意思,下面給出的表達式是什麼意思
- 15. %{}是什麼意思?
- 16. '#'是什麼意思?
- 17. 「?」是什麼意思?
- 18. #{...}是什麼意思?
- 19. || =是什麼意思?
- 20. @是什麼意思
- 21. $$ $$是什麼意思?
- 22. `/ * @`是什麼意思?
- 23. 「=」是什麼意思
- 24. + =是什麼意思?
- 25. {..} [..]是什麼意思?
- 26. 什麼是:!:意思?
- 27. @ []是什麼意思?
- 28. 什麼是「||」意思?
- 29. /([^.]*)\.(.*)/是什麼意思?
- 30. &**是什麼意思?
另請參閱[this](http://stackoverflow.com/q/19268558/1153801)問題。 – SND