Вторник, 19.03.2024, 09:08
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1296
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Условные выражения

     В определении функции в языке Haskell можно использовать условные выражения. Запишем функцию signum, вычисляющую знак переданного ей аргумента:

  signum :: Integer -> Integer
  signum x = if x > 0 then 1
                    else if x < 0 then -1
                                      else 0


     Условное выражение записывается в виде: if условие then выражение else выражение. Обратите внимание, что хотя по виду это выражение напоминает соответствующий оператор в языке Си или Паскаль, в условном выражении языка Haskell должны присутствовать и then-часть и else-часть. Выражения в then-части и в else-части условного оператора должны принадлежать одному типу. Условие в определении условного оператора представляет собой любое выражение типа Bool. Примером таких выражений могут служить сравнения. При сравнении можно использовать следующие операторы:

  • <, >, <=, >= — эти операторы имеют такой же смысл, как и в языке Си (меньше, больше, меньше или равно, больше или равно).
  • == — оператор проверки на равенство.
  • /= — оператор проверки на неравенство.

     Выражения типа Bool можно комбинировать с помощью общепринятых логических операторов && и || (И и ИЛИ), и функции отрицания not. Примеры допустимых условий:
 
  x >= 0 && x <= 10
  x > 3 && x /= 10
  (x > 10 || x < -10) && not (x == y)


    Разумеется, можно определять свои функции, возвращающие значения типа Bool, и использовать их в качестве условий. Например, можно определить функцию isPositive, возвращающую True, если ее аргумент неотрицателен и False в противном случае:

  isPositive :: Integer -> Bool
  isPositive x = if x > 0 then True else False


    Теперь функцию signum можно определить следующим образом:

  signum :: Integer -> Integer
  signum x = if isPositive x then 1
                    else if x < 0 then -1
                                      else 0


    Отметим, что функцию isPositive можно определить и проще:

  isPositive x = x > 0

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---