В видио С. Абрамов пользуется TeX Centre, а где его взять под Widows? Как TeX в этой ОСи поставить и где взять? В HaskellPlatform под Windows (7.10.3...) ...i при :set +s, в отличие от HUGS S.O.E, статистика в сек., а не редукциях. Можно ли там статистику в редукциях выставить? Под VS2008 кто-н. писал колоризатор под Haskell? Add-in? Как оптимально автодополнение реализовать, ну, доступные интерпретатору идентификаторы вытянуть? HUGS SOE где исходники скачать? Курс — то, чего не хватало для курса по метакомпиляции. |
Программирование на Haskell: Информация
Автор: Сергей Абрамов
Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
Вам нравится? Нравится 23 студентам
Уровень:
Для всех
Студентов:
368
Курс ставит своей целью познакомить студентов с функциональным языком программирования Haskell как с первым языком программирования.
Даются основные понятия, на практических примерах и задачах для самостоятельной работы показывается как программировать.
Темы: Программирование
Специальности: Системный архитектор, Архитектор программного обеспечения
План занятий
Занятие
Заголовок <<
Дата изучения
Обзор курса
Обзор курса, учебников, контрольных мероприятий. Книга Дональда Кнута "Искусство программирования". Программирование как наука, ремесло и как искусство
Оглавление
-
История функционального программирования
О решении задач, консультациях, проверке задач через сервер. Эффективность и управляемость кода. Введение. История функционального программирования.
Оглавление
-
Первые языки программирования
Компьютеры БСМ-4, БСМ-12. Компиляторы. Фортран (транслятор формул).
Оглавление
-
Императивные языки программирования
Фон-неймановская архитектура.
Суть функционального программирования.
Оглавление
-
Суть функционального программирования
Функциональная парадигма в программировании.
Первые примеры. Вычисление как преобразование выражения.
Иная последовательность редукций.
Оглавление
-
Примеры. Haskell — ленивый язык
Величины (значения). Типы величин (значения). Неопределенные величины.
Оглавление
-
Функции (подход современной алгебры)
Отношение. Экзистенциональное равенство функций. Композиция функций.
Ассоциативность композиции.
Оглавление
-
Знакомство с системой HUGS. Скрипты и сессии
Пример кода в Haskell (сортировка списков).
Полиморфная функция сортировки.
Прелюдия (обзор Prelude.hs).
Оглавление
-
Базовые типы языка Haskell
Целые числа.
Числа с плавающей точкой.
Сравнения чисел. Логические величины. Символы.
Оглавление
-
Скобки. Операторные секции
Функции высшего порядка. (Слайды, часть вторая).
Функции на списках: map, filter.
Разбор примеров (шаблоны программирования).
Оглавление
-
Левая и правая свертки: foldr и foldl
Правая свертка: foldl.
Композиция функций. (.): многоликий карринг. Разбор примеров (шаблоны программирования).
Оглавление
-
Частное и остаток
Список простых чисел [2 .. n] (без дум об эффективности). Список простых чисел [2 .. n] (Решето Эратосфена). "
Оглавление
-
Функция zip (zipWith)
Этюд на zipWith: проверка отсортированности списка.
Сканирование слева. Примеры scanl.
Оглавление
-
Примеры scanl. Префиксы списка
Наивно: scanl через inits.
Сканирование слева. Эффективное scanl.
Оглавление
-
Диапазон изменения" Q (итератор, генератор)
Предикатное (охранное) выражение P.
Локальное определение L.
Оглавление
-
Структуры данных. Списки
Бесконечные списки.
Создание бесконечных списков.
Бесконечные списки на практике.
Оглавление
-
Функции на бесконечных списках
Получение списка простых чисел (этюд на iterate).
Получение списка простых чисел (этюд на iterate).
Генератор псевдослучайных чисел.
Оглавление
-
Tuples: зачем нужны? Типичное использование: таблицы
Задача: Сколько треугольников с
узлами в заданных точках? (Повторение).
Обсуждение задачи. Решение.
Оглавление
-
Синонимы. Синонимы из прелюдии
Параметризованный синоним.
Пример: рациональные.
Оглавление
-
Инкапсуляция, наследование
Объект, класс. Абстракция и наследование.
Полиморфизм, абстракция.
Классы и перегрузка. Полиморфизмы. Полиморфизмы и классы. Class и Instance.
Оглавление
-
Встроенные классы. Класс Eq. Класс Ord
Пример: неупорядоченная пара. Плохое определение. Исправленное определение. Класс Show.
Оглавление
-
Класс Show. Класс Read
Класс Enum. Класс Num.
Множественное наследование. Классы чисел.
Алгебраические типы данных
Типы-синонимы. Определение новых типов данных.
Ограниченность типов-синонимов.
Оглавление
-
Размеченное объединение. Перечисляемые типы данных
Перечисляемые типы. Функции над Bool.
Перечисляемые типы vs. Подразумеваемые отрезки.
Пример deriving. Пример использования.
Пример использования. "
Оглавление
-
Подсчет вершин (Node, Leaf)
Разновидности пометок деревьев. Разновидности деревьев. Дерево с разными вершинами.
Оглавление
-
Размеченное объединение. Деревья поиска
Поиск в Eq a. Поиск в Ord a.
Деревья поиска. Поиск в дереве.
Сбалансированность дерева.
Оглавление
-
Сортировка с помощью дерева поиска
Построение списка меток.
Сортировка с помощью дерева поиска.
Удаление вершины из дерева поиска.
Оглавление
-
Размеченное объединение. Метки полей
Доступ к полям: по шаблону (позиционный) или по именам?
Метки полей: одним выстрелом двух зайцев.
Метки полей: использование.
Метки полей: построение новых величин.
Метки полей: общий случай.
Оглавление
-
Инкапсуляция данных в модулях
Инкапсуляция — сокрытие деталей (encapsulate).
Модули: экспорт и импорт.
Оглавление
-
Имена модулей и файлов. Обзор имен в Haskell
Обзор имен в Haskell: синтаксические правила.
Пример модуля (экспортера).
Пример модуля (импортера).
Декларации. Экспорт и импорт.
Оглавление
-
Контроль пространства имен
Пример на "qualified".
Синонимы имен модулей. Модуль как способ реализации АТД.
Реализация Tree как АТД. Использование Tree как АТД.
Стек (LIFO) как АТД. Реализация стека на списке.
Оглавление
-
Реализация стека на списке
Реализация стека на списке пар (значение, количество).
Оглавление
-