簡體   English   中英

如何編寫在 Prolog 中選擇特定事實的規則

[英]How to write rule(s) that selects specific facts in Prolog

我試圖了解如何在 prolog 中構造 output。 假設我有一些事實如下

/* Facts */

course1(lunch, burrito).
side(lunch, chips).
side(lunch, pop).

course1(dinner, pizza).
side(dinner, breadsticks).
side(dinner, water).

我怎樣才能寫出一條規則,比如 food(X, Y),其中 X 是午餐或晚餐,並讓它分別返回“墨西哥卷餅、薯條和汽水”或“披薩、面包棒和水”?

這將使您獲得想要的食物/2。

謂詞
文件: C:/Users/Groot/example.pl

lunch(X) :- course1(lunch,X).
lunch(X) :- side(lunch,X).

示例運行

Welcome to SWI-Prolog (threaded, 64 bits, version 8.5.0)


?- working_directory(_,'C:/Users/Groot').
true.

?- [example].
true.

?- lunch(X).
X = burrito ;
X = chips ;
X = pop.

如果您想要列表中的所有項目,請使用 findall/3。

?- findall(X,lunch(X),X).
X = [burrito, chips, pop].

食物/2

食物(X,Y):-課程1(X,Y)。
食物(X,Y):- 側面(X,Y)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM