
- •1.1 Знакомство с интерпретатором Hugs.
- •1.2 Выполнение математических операций в интерпретаторе.
- •1.3. Простейшие генераторы списков.
- •1.4 Логические функции, функции сравнения, функции работы с перечислимыми типами данных.
- •1.5 Простейшие списочные и кортежные функции.
- •Задание на лабораторную работу №1.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Пример выполнения лабораторной работы 1.
- •Лабораторная работа 2. Создание простейших рекурсивных программ. Функции работы со строками и множествами. Сообщения об ошибках и преобразования типов.
- •2.1 Создание простейших рекурсивных программ.
- •2.2 Функции работы со строками и множествами.
- •2.3 Сообщения об ошибках и преобразования типов
- •Задание на лабораторную работу 2.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Пример выполнения работы
- •Лабораторная работа 3. Функции высших порядков.
- •Задание на лабораторную работу 3.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Лабораторная работа 4. Текстовые файлы. Факторизация, простые числа, разные задачи.
- •4. 1 Работа с текстовыми файлами в Haskell
- •Задание на лабораторную работу 4.
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Лабораторная работа 5. Управление выводом в Прологе. Простейшие рекурсивные программы.
- •5.1 Факты и правила. База знаний. Запросы.
- •5.2 Управление выводом.
- •5.3 Рекурсия
- •Задание на лабораторную работу 5.
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №6. Работа со списками в Прологе.
- •6.1 Списки в Прологе.
- •6.2 Алгоритмы обработки списков
- •6.3 Алгоритмы сортировки
- •Лабораторная работа № 7. Решение логических задач на Прологе.
- •Пример выполнения работы.
- •Лабораторная работа № 8.
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 |
|
|