Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Funktsionalnoe_i_logicheskoe_programmirovanie.doc
Скачиваний:
31
Добавлен:
19.01.2023
Размер:
1.75 Mб
Скачать

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

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

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

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

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

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

Обратите внимание, что список данных типа 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