回答
它代表蘊涵。右側只有在左側爲真的情況下才會執行。因此,如果你有這樣的代碼,
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. PROLOG:運算符什麼是「 - >」
- 2. Prolog中的運算符` - >`是做什麼的?
- 3. 什麼是 - >運算符?
- 4. 什麼是()=>運算符?
- 5. 運算符[] - 爲什麼我不應該使用它?
- 6. 什麼是c運算符>>
- 7. 「>>>」運算符 - 用於什麼?
- 8. =>運算符是做什麼的?
- 9. 是' - >'是一個運算符嗎?它返回什麼?
- 10. Javascript中的>>> =運算符是什麼?
- 11. - > *運算符究竟是什麼?
- 12. 這個運算符是什麼「=>」?
- 13. >?=運算符是什麼意思?
- 14. <>運算符是什麼意思
- 15. 什麼是'<>'asp運算符?
- 16. 「<>」運算符是什麼意思?
- 17. 〜>運算符是什麼意思?
- 18. 運算符>>和運算符>>>在java中有什麼區別?
- 19. 什麼是C#中的「88型」,我該如何使用它?
- 20. 什麼是Prolog中的#=
- 21. 爲什麼Enumerable.Cast <>使用我的轉換運算符?
- 22. stl算法中的pred域是什麼,我如何使用它?
- 23. - >運算符在grails中的用法和用法是什麼?
- 24. 使用IRB時,=>運算符左側的意義是什麼?
- 25. 這是什麼「>> =」運算符在C中的意思?
- 26. 在Prolog中使用univ運算符
- 27. 什麼時候在Rails中使用「|| =」運算符?它的意義是什麼?
- 28. 使用運算符>>
- 29. 什麼是=>調用,它是如何在C#中使用的
- 30. 什麼是「&=」運算符?爲什麼Twilio在比較字符串時使用它?
我讀過它可以用來寫解析器。 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