回答
它代表蘊涵。右側只有在左側爲真的情況下才會執行。因此,如果你有這樣的代碼,
implication(X) :-
(X = a ->
write('Argument a received.'), nl
; X = b ->
write('Argument b received.'), nl
;
write('Received unknown argument.'), nl
).
然後,它會寫這取決於它的參數不同的事情:(link to documentation)
?- implication(a).
Argument a received.
true.
?- implication(b).
Argument b received.
true.
?- implication(c).
Received unknown argument.
true.
等等,如果有暗示的話,邏輯false - > false應該給出true ',但實際上沒有。那是什麼? – 2018-02-25 13:11:58
這是切的本地版本,請參閱例如SWI手冊中的section on control predicated。
它主要用於實現if-then-else by(condition - > true-branch; false-branch)。一旦條件成功,沒有從真正的分支回到狀態或進入假分支,但是回到if-then-else仍然是可能的。因此它被稱爲局部切割或軟切割。
SWI通過「* - >」而不是「 - >」提供軟切換! – mat 2012-05-08 19:20:16
可以通過寫更羅嗦的東西來避免使用它。如果我重寫Stephan's斷言:
implication(X) :-
(
X = a,
write('Argument a received.'), nl
;
X = b,
write('Argument b received.'), nl
;
X \= a,
X \= b,
write('Received unknown argument.'), nl
).
(是的,我不認爲這是使用它的任何問題,但我的老闆是疑神疑鬼出於某種原因,所以我們總是用上面的方法)
無論使用哪種版本,都需要注意您覆蓋了您打算覆蓋的所有案例,特別是如果您有多個分支。
ETA:我不確定這是否完全等同於斯蒂芬的,因爲回溯如果您有implication(X)
。但是我現在沒有一個Prolog解釋器來檢查。
嗯。我對Prolog沒有太多的瞭解,但這似乎違反了DRY原則。不知道這是否值得!我的意思是,特別是如果前提變得稍微複雜一點,這可能會變得混亂。至於回溯:對於這個版本(SWI-)prolog不會立即返回到「暗示(a)」和「暗示(b)」的提示,所以確實會嘗試一些回溯。 – Stephan202 2009-11-22 09:07:15
是的,我絕對不是說這是一個優越的選擇,只是它是一種選擇。 :) – pfctdayelise 2009-11-22 22:55:23
- 1. 什麼是()=>運算符?
- 2. 什麼是c運算符>>
- 3. 「>>>」運算符 - 用於什麼?
- 4. =>運算符是做什麼的?
- 5. Javascript中的>>> =運算符是什麼?
- 6. 這個運算符是什麼「=>」?
- 7. - > *運算符究竟是什麼?
- 8. >?=運算符是什麼意思?
- 9. 「<>」運算符是什麼意思?
- 10. 〜>運算符是什麼意思?
- 11. 運算符>>和運算符>>>在java中有什麼區別?
- 12. 什麼是C#中的「88型」,我該如何使用它?
- 13. 爲什麼Enumerable.Cast <>使用我的轉換運算符?
- 14. 在Prolog中使用univ運算符
- 15. 什麼時候在Rails中使用「|| =」運算符?它的意義是什麼?
- 16. 使用運算符>>
- 17. - >運算符在Perl中做什麼?
- 18. 什麼是「&=」運算符?爲什麼Twilio在比較字符串時使用它?
- 19. 如何使用 - >(箭頭)運算符?
- 20. 行動的結果是什麼,我該如何使用它?
- 21. 什麼是此對象的名稱,我該如何使用它?
- 22. 這個JavaScript運算符是什麼意思? >>>
- 23. ^=運算符,它有什麼作用?
- 24. - >, - > *和。*運算符的正確名稱是什麼?
- 25. Lambda表達式替換爲什麼我可以使用「%」運算符而不是「>」運算符
- 26. 運算符模塊中`in`的等效運算符是什麼?
- 27. 什麼是Java「= +」運算符?
- 28. 什麼是「===」運算符?
- 29. C++ - 什麼是運算符。*?
- 30. 什麼是XRPC,我該如何使用它
我讀過它可以用來寫解析器。 SUM - > O1 + O2或某物... – 2009-11-21 15:10:46
即 - >(注意兩個字符),請參閱SWI手冊:http://www.swi-prolog.org/pldoc/doc_for?object=section%282 %2c%20%274.12%27%2c%20swi%28%27%2fdoc%2fManual%2fDCG.html%27%29%29 – starblue 2009-11-21 19:22:56