Kısa bir süre önce Prolog
'u öğrenmeye başladım ve bir sorunla karşılaştım.Sorgu döndürme doğru/yanlış
şu Prolog
içine yüklenmiş:
likes(john, apple).
likes(john, pear).
likes(john, grapes).
likes(bill, mango).
likes(bill, apple).
Ben True
dönmelidir bir yüklemi all_like(What, List)
yazıyorum eğer What
meyve gibi List
tüm insanlar.
Örn:
all_like(apple,[john, bill]).
dönmelidir:
true ;
false.
all_like(grapes,[john, bill]).
dönmelidir: Aşağıdaki kod var
false.
:
all_like(What,List) :- check_list(What,List).
check_list(What,[]) :- write('true').
check_list(What, [X|Rest]) :- likes(X,What), check_list(What,Rest).
check_list(What, [X|Rest]) :- \+ likes(X,What), write('false').
Benim sonuçları şunlardır:
1 Sorgu
true
true .
Ben bu sonuçları alıyorum neden
false
true .
herkes bilir mi 2 Sorgu?
Çıkarılan ikinci boolean değerinin önemi nedir?
Son olarak, önemli bir alandan sonra görünen .
mu?
Yardımlarınız için teşekkür ederiz.
Teşekkür: GNU Prolog'da
, çıktı şuna benzer lurker, bu daha mantıklı. İlk örnekte 'true' ifadesinden sonra 'false' yazıldığını sorabilir miyim? –
@Giri "false", "true" ifadesinden sonra görüntüleniyor, çünkü Prolog'un daha fazla çözüm olup olmadığını kontrol etmek için bir seçim noktası vardı, ancak ek yanıtlar bulamadı. Yani SWI Prolog "false" çıkarır. GNU Prolog örneğinde görebilirsiniz, "yanlış" yerine "hayır" alırsınız ve aynı şey anlamına gelir: daha fazla çözüm yok. – lurker