
- •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.
Задание на лабораторную работу 3.
1. Используя функции а) any и б) all, проверьте условия в интерпретаторе. Запишите функции в файле, решающие те же задачи, используя частичное применение функции.
2. Запишите функцию, решающую задачу
а) обычную рекурсивную функцию;
б) функцию с использованием функции map;
в) функцию с использованием функции map и лямбда-фнкциии.
Приветствуется частичное применение функций в пунктах б) и/или в).
3. Запишите функции, решающие задачи с использованием
а) функции filter;
б) функций filter, zip, unzip;
в) функций takeWhile, dropWhile, break, span, splitAt
4. Для заданного отображения Р найти
5.Проверить указанное свойство операций над указанным множеством. Входные аргументы функции должны быть списком функций или списком кортежей функций и содержать необходимое число входных аргументов из множества (см. в таблице пример).
6. Отсортировать список кортежей двух целочисленных элементов по указанному признаку.
7. Дан список предикатов двух переменных:
Р1(х,у)=”x+y – четное число”,
P2 (х,у)=”x>y”,
P3 (х,у)=”x и y имеют одинаковые остатки от деления на 4”,
P4 (х,у)=”x+2y<8”,
P5 (х,у)=”max{x,y} – нечетное число”,
и список кортежей [(x,y)]. Написать функцию, имеющую аргументами эти два списка и решающую задачу.
Вариант 1.
1. а) в строке есть цифры,
б) все символы строки – прописные буквы.
2. Функция заменяет каждый элемент списка остатком его деления на 3.
3. а) удаляет из строки все элементы, кроме букв и цифр;
б) возвращает список индексов гласных букв в строке;
в) удаляет из строки все элементы, следующие за последней точкой
(«abc. 123. F5? 6» -> «abc. 123.»)
4.
5.
Множество |
Свойство |
Пример |
R |
дистрибутивности справа
|
foo [(/,*),(*,+),(**,*),(**,+)] 2 3 4 -> [False,True,False,False] |
6. По сумме элементов.
7. Возвращает список логических значений
выражения
для
каждого из предикатов.
Вариант 2.
1. а) в списке есть числа, кратные 6,
б) все числа в списке меньше 100
2. Функция заменяет список кортежей двух чисел списком их сумм.
3. а) удаляет из числового списка все кратные 6 элементы;
б) возвращает сумму индексов четных элементов списка;
в) возвращает кортеж двух строк – в первой все символы до первой прописной буквы, во второй – все оставшиеся символы исходной строки.
4.
5.
Множество |
Свойство |
Пример |
множеств |
ассоциативности
|
foo [union, \\, intersect] [1..5] [3..6] [2..10] -> [True,False,True] |
6. По минимальному элементу.
7. Возвращает список логических значений
выражения
для
каждого из предикатов.