User Tools

Site Tools


Sidebar






Old

courses:functional_programming:lectures

This is an old revision of the document!


Программа

Введение

  • Особенности функционального программирования(ФП)
  • Отличия ФП от императивного программирования
  • Сильные и слабые стороны ФП

Лямбда-исчиcление

  • Формализации понятия алгоритма
  • Чистое λ-исчисление
  • Свободные и связанные переменные
  • Комбинаторы
  • Каррирование
  • Подстановка
  • Правила преобразования
  • Эквивалентность λ-термов

Рекурсия и редукция

  • Теорема о неподвижной точке, Y-комбинатор
  • Совместимые (с λ-исчислением) отношения, отношения редукции, отношения равенства(конгруэнтности)
  • Одношаговая β-редукция, β-редукция, β-равенство
  • Редукционные графы
  • Нормальная форма(nf)
  • Ненормализуемые, слабо нормализуемые и сильно нормализуемые термы
  • Теорема Чёрча-Россера, теорема об общем редукте, теорема о единственности nf
  • Стратегии редукции
  • Головная нормальная форма, слабая головная нормальная форма
  • Теорема о нормализуемости

Просто(е) типизированное лямбда-исчисление

  • Понятие типа (предназначение типов)
  • Типы в логике и в программировании
  • Просто(е) типизированное λ-исчисление
  • Типизация по Чёрчу и Карри

Введение в язык Haskell

  • Базовые типы
  • Связывание
  • Определение функций
  • Охранные выражения
  • Конструкции where и let…in
  • Операторы и сечения
  • Модули
  • Реализации языка Haskell и инфраструктура

Основы программирования в Haskell

  • Ленивые и строгие вычисления
  • Алгебраические типы данных: декартово произведение и размеченное объединение
  • Сопоставление с образцом
  • Работа со списками
  • Генераторы списков
  • Функции высших порядков над списками

Классы типов

  • Виды полиморфизма
  • Классы типов
  • Сравнение с другими языками программирования
  • Обзор стандартных классов типов
  • Особенности внутренней реализации классов типов

Свертки и моноиды

  • Левая и правая свертки
  • Родственные сверткам функции
  • Моноиды
  • Законы моноидов

Функторы

  • Функторы
  • Законы для функторов
  • Аппликативные функторы
  • Законы для аппликативных функторов

Использование аппликативных функторов

  • Аппликативные парсеры
  • Класс типов Alternative
  • Законы класса Alternative
  • Класс типов Traversable
  • Законы класса Traversable

Монады

  • Стрелка Клейсли
  • Понятие монады
  • Класс типов Monad
  • Монады Identity, Maybe
  • Список как монада
  • Отличие монад от аппликативных функторов

Стандартные монады

  • Reader
  • Writer
  • State
  • IO
  • Функции ввода-вывода

Трансформеры монад

  • Класс типов MonadPlus
  • Законы класса MonadPlus
  • Монада Except
  • Мультипараметрические классы типов
  • Трансформеры монад
  • Законы для класса типов MonadTrans
  • Стандартные трансформеры библиотеки mtl

Вывод типов*

Программирование с зависимыми типами*

Чисто функциональные структуры данных*

ФП в mainstream-языках*

GHC Core*

courses/functional_programming/lectures.1537717828.txt.gz · Last modified: 2022/12/10 09:08 (external edit)