1. 算术
Prolog
中也有一些能够进行数学计算的功能,但是数学计算是不好用逻辑的事物来描述的。因此计算一个数学表达式的方法和我们以前所学习的模式匹配有很大的区别。因此,Prolog
专门提供了内部谓词is来计算数学表达式。其语法形式如下:
X is <数学表达式>
变量X将被赋值为表达式的值,在回溯时不赋值。数学表达式的形式和其他的语言相同。下面是使用Prolog
计算的一些例子。
?- X is 2 + 2.
X = 4
?- X is 3 * 4 + 2.
X = 14
我们还可以使用括号,
?- X is 3 * (4 + 2).
X = 18
?- X is (8 / 4) / 2.
X = 1
除了is
以外,Prolog还提供了一些用来比较大小的操作符。
X > Y
X < Y
X >= Y
X =< Y
请注意>=
和=<
,它们的符号顺序是不能颠倒的。下面是一些例子,
?- 4 > 3.
yes
?- 4 < 3.
no
?- X is 2 + 2, X > 3.
X = 4
?- X is 2 + 2, 3 >= X.
no
?- 3+4 —> 3*2.
yes
我们可以在规则中使用这些符号,例如,
c_to_f(C,F) :-
F is C * 9 / 5 + 32.
freezing(F) :-
F =< 32.
c_to_f/2
把摄氏温度转换为华氏温度,freezing/1
判断华氏温度的冰点。下面是使用这些谓词的例子。
?- c_to_f(100,X).
X = 212
yes
?- freezing(15).
yes
?- freezing(45).
no