Назад
Парадигмы программирования: язык Haskell
Общая информация
Во 2 семестре 2008-2009 учебного года на практических занятих по обязательному спецкурсу
«Парадигмы программирования» изучается язык Haskell. Компилятор ghc
установлен на компьютере linux.fenster.name
, доступ к которому есть из сетей НГУ,
academ.org и HomeNet.
Преподаватель: Александр Геннадьевич Фенстер, fenster@fenster.name, +7 913 9053295.
Рекомендуемая литература:
- Душкин Р. В. Функциональное программирование на языке 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 | Зайков Александр |
+
|
+
|
+
|
+
|
+
|
+
|
+
| |
+
| 8 |
хорошо
|
5 | Исаев Валерий |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
6 | Кременная Ольга |
+
|
+
|
+
|
+
|
+
|
+
|
+
| | | 7 |
удовл
|
7 | Кузькоков Владислав |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
8 | Ломакин Сергей |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
9 | Лысяк Александр |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
10 | Носова Дарья |
+
|
+
|
+
|
+
|
+
|
+
|
+
| |
+
| 8 |
хорошо
|
11 | Полушкин Михаил |
+
|
+
|
+
| | | | | | | 3 |
неудовл
|
12 | Сорокин Роман |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
13 | Тищенко Николай |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
| 9 |
отлично
|
14 | Часовщикова Анна |
+
|
+
|
+
|
+
|
+
|
+
|
+
| |
+
| 8 |
хорошо
|
Гистограмма
Список семестровых заданий
- Слияние списков. Реализовать слияние двух списков, не используя операцию
++
.
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. Условия задач находятся в отдельном файле,
распределение задач — здесь.