Next: , Previous: Арифметические операторы, Up: Операторы   [Contents][Index]

5.6 Операторы отношения

Оператор: <
Оператор: <=
Оператор: >=
Оператор: >

Символы < , <= , >= и > представляют отношения меньше, меньше или равно, больше или равно и больше, соответственно. Имена этих операторов есть "<" , "<=" , ">=" и ">". Эти имена могут применяться в случае, если требуется имя функции или оператора.

Данные операторы отношения являются бинарными. Конструкции типа a < b < c недопустимы в Maxima.

Операторы отношения вычисляются до логических значений функциями is и maybe, и программными конструкциями if, while и unless. В других случаях операторы отношения не вычисляются или упрощаются до логических значений, хотя аргументы операторов отношения вычисляются (если вычисление не блокировано при помощи оператора кавычка).

Если выражение отношения не может быть вычислено до логического значения true или false, то поведение is и if управляется глобальным флагом prederror. Если значение prederror равно true, то is и if вызывает ошибку. Если значение prederror равно false, то is возвращает unknown а if возвращает частично-вычисленное условное выражение.

maybe всегда ведет себя так, если бы prederror равнялось false, а while и unless всегда ведут себя так, если бы prederror равнялось true.

Операторы отношения не дистрибутивны по отношению к спискам и другим конструкциям.

См. также = , # , equal и notequal.

Примеры:

Операторы отношения вычисляются до логических значений некоторыми функциями и программными конструкциями.

(%i1) [x, y, z] : [123, 456, 789];
(%o1)                    [123, 456, 789]
(%i2) is (x < y);
(%o2)                         true
(%i3) maybe (y > z);
(%o3)                         false
(%i4) if x >= z then 1 else 0;
(%o4)                           0
(%i5) block ([S], S : 0, for i:1 while i <= 100 do S : S + i, return (S));
(%o5)                         5050

Во всех других случаях операторы отношения не вычисляются или упрощаются до логических значений, хотя их аргументы вычисляются.

(%o1)                    [123, 456, 789]
(%i2) [x < y, y <= z, z >= y, y > z];
(%o2)    [123 < 456, 456 <= 789, 789 >= 456, 456 > 789]
(%i3) map (is, %);
(%o3)               [true, true, true, false]

Next: , Previous: Арифметические операторы, Up: Операторы   [Contents][Index]