Общая информация
Во 2 семестре 2009–2010 учебного года на практических занятих по обязательному спецкурсу
«Парадигмы программирования» изучается язык Haskell. Компилятор ghc
установлен на компьютере linux.fenster.name, доступ к которому есть из сетей НГУ,
academ.org и HomeNet.
Преподаватель: Александр Геннадьевич Фенстер, fenster@fenster.name, +7 913 9053295.
Лектор: Лидия Васильевна Городняя.
Вопросы к зачёту от лектора: rtf
Рекомендуемая литература:
- Душкин Р. В. Функциональное программирование на языке Haskell. М.: ДМК-пресс, 2006.
Лично я эту книгу заказал в books.ru и не пожалел;
вряд ли её реально найти в книжных магазинах в Новосибирске. Впрочем, если у кого-то
получится — сообщите мне, пожалуйста.
- A Gentle Introduction to Haskell на haskell.org
- Лекции по ФП Р. В. Душкина
- haskell.ru
|
|
Таблица результатов
|
#
|
Фамилия, имя
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Итого
|
Оценка за практику
|
| 1 |
Артиков Артур |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 2 |
Артиков Тимур |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 3 |
Архинчеева Светлана |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
|
7 |
|
| 4 |
Боровский Виктор |
+
|
+
|
+
|
+
|
+
|
|
|
|
|
5 |
|
| 5 |
Васькин Юрий |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 6 |
Грехов Герман |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 7 |
Заречнева Юлия |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
|
7 |
|
| 8 |
Зеленчук Андрей |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
|
7 |
|
| 9 |
Золотухин Тимур |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 10 |
Зятьков Николай |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 11 |
Клименко Александр |
+
|
+
|
+
|
+
|
+
|
|
|
|
|
5 |
|
| 12 |
Колбин Дмитрий |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 13 |
Комышев Евгений |
|
|
|
|
|
|
|
|
|
0 |
|
| 14 |
Кузнецов Илья |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 15 |
Кузьмин Павел |
+
|
+
|
+
|
+
|
+
|
+
|
|
+
|
+
|
8 |
|
| 16 |
Мартьянов Андрей |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 17 |
Матвиенко Сергей |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
+
|
8 |
|
| 18 |
Никитин Виктор |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
|
7 |
|
| 19 |
Никулин Вячеслав |
+
|
+
|
+
|
+
|
+
|
|
|
|
|
5 |
|
| 20 |
Сердюк Константин |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 21 |
Скуридина Валентина |
+
|
+
|
+
|
+
|
+
|
+
|
|
|
+
|
7 |
|
| 22 |
Суслопаров Денис |
+
|
+
|
+
|
|
|
|
|
|
|
3 |
|
| 23 |
Татаринцев Павел |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 24 |
Тейтельбаум Дмитрий |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 25 |
Хлебников Сергей |
+
|
+
|
+
|
+
|
+
|
+
|
|
|
|
6 |
|
| 26 |
Царапкин Михаил |
+
|
+
|
+
|
+
|
+
|
+
|
|
|
+
|
7 |
|
Гистограмма
|
Список семестровых заданий
- Слияние списков. Реализовать слияние двух списков, не используя операцию
++.
append1 [1,2,3,4] [5,6,7] = [1,2,3,4,5,6,7]
- Разворот списка. Реализовать разворот списка.
reverse1 [1,2,3,4] = [4,3,2,1]
- Бесконечные списки — 1. Реализовать функцию, возвращающую список чисел Фибоначчи.
take 7 fib = [0,1,1,2,3,5,8]
- Бесконечные списки — 2. Реализовать функцию, возвращающую список всех простых чисел.
take 6 primes = [2,3,5,7,11,13]
- Сортировка. Реализовать функцию, сортирующую список сравнимых (
Ord a) элементов
в порядке неубывания.
sort1 [3,1,5,4,2] = [1,2,3,4,5]
- Перестановки. Реализовать функцию, генерирующую список всех перестановок элементов списка.
permut [1,2,3] = [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
- Бинарные деревья. Реализовать модуль
Tree, содержащий необходимые функции для работы с
бинарными деревьями поиска. Должны быть реализованы следующие функции:
- создание пустого дерева;
- вставка элемента в дерево поиска (возвращается новое дерево);
- удаление элемента из дерева поиска (возвращается новое дерево);
- определение наличия элемента в дереве поиска;
- вывод значений узлов дерева поиска в порядке возрастания (инфиксный обход), в порядке префиксного обхода и
в порядке обхода в ширину;
- вывод дерева в виде скобочной записи (например,
(2,(1,(),()),(3,(),(4,(),())))).
Пример создания модуля и своего типа: tgz (tar xzf haskell-modules.tar.gz).
- Индивидуальное задание — 1.
- Индивидуальное задание — 2. Условия задач находятся в отдельном файле,
распределение задач — здесь.
|