Логические функции, функции сравнения, функции работы с перечислимыми типами данных.



В Haskell имеется булевский тип данных, обозначаемый Bool. К этому типу принадлежат два значения True и False, соответствующие, как легко догадаться, истине и лжи. Из логических функций в Haskell имеются not, && и ||, соответствующие отрицанию, конъюнкции и дизъюнкции. Другие же логические функции можно выразить через эти три. Но тут есть маленькие хитрости, позволяющие пойти более простым путем. Сначала упомянем функции сравнения, они имеют обычный математический смысл:

· < - меньше

· > - больше

· == - равно

· /= - не равно

· >= - ,не менее

· <= - не более.

Теперь поясним, как можно с помощью функций сравнения выразить некоторые другие логические операции. Эквивалентность достаточно заменить сравнением на равенство, сумму по модулю 2 ( исключающее «или») сравнением на неравенство. Импликацию же оказывается можно заменить сравнением «не более». Дело в том, что булевский тип данных у нас перечислимый, то есть, определен четкий порядок перечисления данных этого типа. А именно, значение False идет раньше значения True. Импликация должна принимать ложное значение, только если первый аргумент True, а второй False. Но именно в этом случае сравнение True<=False даст в результате ложь, а во всех остальных случаях результатом будет истина.

       Приведем еще несколько функций для работы с упорядоченными и перечислимыми типами данных.

 

Табл. 1.2 Функции работы с упорядоченными и перечислимыми типами

Описание Имя функции Пример Примечание
Максимум из двух значений max  
Минимум из двух значений min  
Предыдущее значение pred может вызвать ошибку времени выполнения, если значение наименьшее из возможных
Последующее значение succ может вызвать ошибку времени выполнения, если значение наибольшее из возможных

 

 

 

Простейшие списочные и кортежные функции.

 

       Выше уже упоминались списки и кортежи и приводились их примеры. Систематизируем еще раз знания об этих типах данных. Список – это последовательность однотипных элементов, конечная или бесконечная. Ниже приведены примеры нескольких списков:

· Список целых чисел

         

· Список вещественных чисел

        

· Список символов (строка)

        

· Список списков целых чисел

Обратите внимание, что список данных типа Char можно задавать и как список отдельных символов в одинарных кавычках, и как строку в двойных кавычках без квадратных скобок.

       Еще одним типом данных в Haskell является кортеж. Кортеж в отличие от списка может содержать разнотипные элементы и заключается в круглые скобки.

В приведенном выше примере первый из кортежей содержит два целых числа, а второй – две строки и целое число. В отличие от списков нет возможности работать с кортежем по индексу элемента, фактически, имеется доступ только к первому и второму элементам кортежа. Ниже в таблице приведены простейшие функции работы со списками. Следует сказать, что Haskell содержит очень много различных функций для работы со списками. Часть из них определена в модуле Prelude, иные в модулях List, Array и некоторых других. Сейчас мы изучим главным образом первые и наиболее простые. 

 

Табл. 1.3. Простейшие списочные и кортежные функции.

Описание Имя функции Пример Примечание

Кортежные функции

Первый элемент кортежа fst  
Второй элемент кортежа snd  

Списочные функции

Первый элемент списка (голова списка) head  
Элементы списка, кроме первого (хвост списка) tail  
Присоединение элемента к списку :  
Длина списка length  
Слияние списков (конкатенация) ++  
Первые n элементов списка take  
Удаление первых n элементов списка drop  
Удаление последнего элемента списка init  
Реверсирование списка reverse  
Получение элемента по индексу !! индексация всегда считается с нуля
Последний элемент списка last  
Проверка принадлежности элемента списку elem  
Проверка непринадлежности элемента списку notElem  
Генерация списка одинаковых элементов replicate  
Максимальный элемент списка maximum  
Минимальный элемент списка minimum  
Сумма элементов числового списка sum  
Произведение элементов числового списка product  

 


Дата добавления: 2019-03-09; просмотров: 485; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!