@aubree
Haskell поддерживает множество операторов, включая арифметические, логические, сравнения, а также операторы для работы с типами.
- Арифметические операторы:
- (+) сложение
- (-) вычитание
- (*) умножение
- (/) деление
- (%) остаток от деления
- (**) возведение в степень
- negate смена знака на противоположный
- Логические операторы:
- (||) логическое ИЛИ
- (&&) логическое И
- not отрицание
- Операторы сравнения:
- (==) равенство
- (/=) неравенство
- (<) строго меньше
- (>) строго больше
- (<=) меньше или равно
- (>=) больше или равно
- Операторы для работы с типами:
- (:) конструктор списка
- (.) композиция функций
- ($) применение функции
Кроме этого, в Haskell также есть инфиксные операторы, которые могут определяться пользователем, используя ключевое слово infix или infixr вместе с функцией. Например,
1
2
3
|
infixr 5 :::
(:::) :: Int -> [Int] -> [Int]
x ::: xs = x : xs
|
Теперь мы можем использовать этот оператор вместо оператора (:) для добавления элемента к списку:
1
|
2 ::: [3, 4, 5] -- [2, 3, 4, 5]
|
Операторы могут быть использованы в конструкциях if-then-else, в связывании переменных с помощью let и where, а также в определении функций. Например,
1
|
f x y = let z = x + y in z * z
|
здесь использованы операторы сложения и умножения для вычисления квадрата суммы двух аргументов функции f.