Функциональные языки программирования весна 2025 — различия между версиями

Материал из Public ATP Wiki
Перейти к: навигация, поиск
(Новая страница: «Test»)
 
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
Test
+
 
 +
== Общие сведения ==
 +
 +
Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП  в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.
 +
 
 +
== Команда курса ==
 +
 
 +
* Руководитель курса: Дашков Евгений
 +
 
 +
== План курса ==
 +
 
 +
* 1. Вычисление как «редукция» (неформальное введение). Бестиповое лямбда-исчисление. Редукции, нормальные формы, теорема Чёрча-Россера.
 +
* 2. Представление логических значений и натуральных чисел, пар, условного перехода. Итерация.
 +
* 3. Неподвижная точка и различные виды рекурсии.  Минимизация. Представление вычислимых функций. Неразрешимость бестипового лямбда-исчисления.
 +
Более сложные типы данных.
 +
* 4. Лямбда-исчисление с простыми типами. Вывод типов. Представление логических и арифметических функций.  Понятие о более сильных исчислениях.
 +
* 5. Программа на языке Haskell. Переменные и функции. Важнейшие типы данных. Каррирование, лямбды, let in, разбор случаев, гарды, рекурсия.
 +
* 6. Полиморфизм. Классы. Типы с параметрами. Списки и работа с ними.
 +
* 7. Функции высших порядков. Свертки.
 +
* 8. Алгебраические типы данных. Определение типов и классов.
 +
* 9. Отложенные и строгие вычисления. Параллелизм.
 +
* 10. Ввод и вывод. Генераторы случайных чисел.
 +
* 11. Программа в целом.  Система модулей. Обработка аргументов командной строки. Библиотека QuickCheck.
 +
* 12. Функторы, аппликативные функторы и монады. Понятие о категориях.
 +
* 13. Моноиды. Классы Foldable  и Traversable.
 +
* 14. Монады Writer, Reader и State.
 +
* 15. Эффективная реализация алгоритмов в ФП.
 +
* 16. Преобразователи монад.
 +
* 17. «Застежки» (zippers) и «оптика».
 +
 
 +
== Полезные ссылки ==
 +
 
 +
* Код к лекциям: https://github.com/edashkov/hse-fp-22
 +
* Видео прошлых лет: https://youtube.com/playlist?list=PL1Uob8iPTHGQcHjYxkXKfNihme3cjNiRg&si=Wg45z8MHTkcHcSbP
 +
 
 +
 
 +
== Критерии получения оценки ==
 +
 
 +
* Оценка выставляется по домашним заданиям и одной контрольной работе по формуле:
 +
 
 +
* ОКРУГЛ(0.65 * ДЗ + 0.35 * КР)
 +
 
 +
* Значения ДЗ и КР лежат от 0 до 10.
 +
 
 +
* ДОМАШНЕЕ ЗАДАНИЕ разбито на пять или шесть частей и выдается постепенно.

Текущая версия на 18:33, 20 декабря 2024

Общие сведения

Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.

Команда курса

  • Руководитель курса: Дашков Евгений

План курса

  • 1. Вычисление как «редукция» (неформальное введение). Бестиповое лямбда-исчисление. Редукции, нормальные формы, теорема Чёрча-Россера.
  • 2. Представление логических значений и натуральных чисел, пар, условного перехода. Итерация.
  • 3. Неподвижная точка и различные виды рекурсии. Минимизация. Представление вычислимых функций. Неразрешимость бестипового лямбда-исчисления.

Более сложные типы данных.

  • 4. Лямбда-исчисление с простыми типами. Вывод типов. Представление логических и арифметических функций. Понятие о более сильных исчислениях.
  • 5. Программа на языке Haskell. Переменные и функции. Важнейшие типы данных. Каррирование, лямбды, let in, разбор случаев, гарды, рекурсия.
  • 6. Полиморфизм. Классы. Типы с параметрами. Списки и работа с ними.
  • 7. Функции высших порядков. Свертки.
  • 8. Алгебраические типы данных. Определение типов и классов.
  • 9. Отложенные и строгие вычисления. Параллелизм.
  • 10. Ввод и вывод. Генераторы случайных чисел.
  • 11. Программа в целом. Система модулей. Обработка аргументов командной строки. Библиотека QuickCheck.
  • 12. Функторы, аппликативные функторы и монады. Понятие о категориях.
  • 13. Моноиды. Классы Foldable и Traversable.
  • 14. Монады Writer, Reader и State.
  • 15. Эффективная реализация алгоритмов в ФП.
  • 16. Преобразователи монад.
  • 17. «Застежки» (zippers) и «оптика».

Полезные ссылки


Критерии получения оценки

  • Оценка выставляется по домашним заданиям и одной контрольной работе по формуле:
  • ОКРУГЛ(0.65 * ДЗ + 0.35 * КР)
  • Значения ДЗ и КР лежат от 0 до 10.
  • ДОМАШНЕЕ ЗАДАНИЕ разбито на пять или шесть частей и выдается постепенно.