如何查询序言中的事实总和?
How to query to sum facts in prolog?
我是 prolog 的新手,不知道如何查询以下内容,创建一个我正在尝试做的小例子:
有一组事实:
calories(pizzaSlice, 250).
calories(porkFillet, 400).
我需要知道“pizzaSlice 和 porkFillet 总共有多少卡路里?”
我觉得应该有一个直接的方法来做到这一点,但我想不通。
如果我问:
calories(pizzaSlice, X).
// X = 250 .
但我尝试了以下方法。所有这些都会导致错误:
(calories(pizzaSlice, X) + calories(porkFillet, X)).
(calories(pizzaSlice, X) + calories(porkFillet, Y)).
(calories(pizzaSlice, _) + calories(porkFillet, _)).
我该怎么做?
谢谢。
请记住,Prolog 是一种基于一阶逻辑的声明性编程语言。您不能在 Prolog 中编写 return 值的函数(例如在 Python 中),您总是定义逻辑谓词。
您的示例的查询是:
?- calories(pizzaSlice, CalPS),
calories(porkFillet, CalPF),
Sum is CalPS + CalPF.
变量Sum
将通过pizzaSlice
(即CalPS
)和porkFillet
(即CalPF
)的卡路里总和实例化.
我是 prolog 的新手,不知道如何查询以下内容,创建一个我正在尝试做的小例子:
有一组事实:
calories(pizzaSlice, 250).
calories(porkFillet, 400).
我需要知道“pizzaSlice 和 porkFillet 总共有多少卡路里?”
我觉得应该有一个直接的方法来做到这一点,但我想不通。
如果我问:
calories(pizzaSlice, X).
// X = 250 .
但我尝试了以下方法。所有这些都会导致错误:
(calories(pizzaSlice, X) + calories(porkFillet, X)).
(calories(pizzaSlice, X) + calories(porkFillet, Y)).
(calories(pizzaSlice, _) + calories(porkFillet, _)).
我该怎么做?
谢谢。
请记住,Prolog 是一种基于一阶逻辑的声明性编程语言。您不能在 Prolog 中编写 return 值的函数(例如在 Python 中),您总是定义逻辑谓词。
您的示例的查询是:
?- calories(pizzaSlice, CalPS),
calories(porkFillet, CalPF),
Sum is CalPS + CalPF.
变量Sum
将通过pizzaSlice
(即CalPS
)和porkFillet
(即CalPF
)的卡路里总和实例化.