[英]Trouble with defining rules in Prolog
married(man, woman).
married(B, A) :-
married(A, B)
如果B
與A
結婚,則A
與B
結婚。
我知道按照我的方式編寫它會創建一個循環,但我不知道如何防止這種情況發生。
parent(Parent, Child) :-
parent(married(Parent, Spouse), Child).
我也無法做這樣的事情。
如果Parent
是Child
的父母:-
Parent
的配偶是Child
的父母。
制作兩個單獨的謂詞。 首先定義一個列出事實的謂詞:
married_fact(philip, elisabeth).
married_fact(william, kate).
married(X, Y) :-
married_fact(X, Y).
married(X, Y) :-
married_fact(Y, X).
我也無法做這樣的事情:
如果
Parent
是Child
的父母:-Parent
的配偶是Child
的父母。
語法parent(married(Parent, Spouse), Child).
沒有多大意義,因為married(Parent, Spouse)
在這里是一個函子。 即使 Prolog 將其視為謂詞,謂詞也不會“返回”任何內容。 謂詞要么為真,要么為假。
您可以定義一個parent_fact/2
謂詞:
parent_fact(phillip, charles).
然后定義一個謂詞:
parent(Parent, Child) :-
parent_fact(Parent, Child).
parent(Parent, Child) :-
married(Parent, Spouse),
parent_fact(Spouse, Child).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.