亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Prolog中的邏輯“不”是什么?

Prolog中的邏輯“不”是什么?

侃侃爾雅 2019-10-21 14:32:38
我面臨的問題有點瑣碎。我想在Prolog中不使用邏輯,但是這似乎not/1不是我想要的東西:course(ai).course(pl).course(os).have(X,Y) :- course(X),course(Y),not(X = Y).我查詢:have(X,Y), write(X-Y), nl , fail.而且我沒有得到想要的結果:(
查看完整描述

3 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

在SWI-Prolog和GNU Prolog中,以下都應該起作用:


have(X, Y) :- course(X), course(Y), X \= Y.

在SWI-Prolog中,您還可以使用dif/2,它可以更加方便,因為您可以在謂詞中更早地使用它:


have(X, Y) :- dif(X, Y), course(X), course(Y).


查看完整回答
反對 回復 2019-10-21
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

作為上述用戶“假”答案的補充,即

“代替not(X = Y),您需要編寫\ + X = Y,”

這可能給人的印象是:

一種?!?not”和“ \ +”是不同的東西

b。\ +將起作用,而不是,則不會。

我的理解是“ not”和“ \ +”是等效的,但是\ +在現代Prolog程序中是首選,因為它傳達了一種更直觀的感覺。具體而言,盡管“不”可能暗示粗心的編碼器“不正確”,而“ \ +”卻暗示“不可證明”,這與該操作實際上在說什么很接近。在Prolog中,“不是”是“否定即失敗”的一個示例,但是可以感覺到\ +將使程序員更清楚在任何給定規則中確切地斷言了什么。因此,您可以使用“ not”(大多數PL實現將其保留為向后兼容),但要成為慣用的現代PL程序員,您可能應該更喜歡使用\ +。


查看完整回答
反對 回復 2019-10-21
  • 3 回答
  • 0 關注
  • 1291 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號