Лямбда-числення і функціональне програмування (кн дввс)

Тип: На вибір студента

Кафедра: інформаційних систем

Навчальний план

СеместрКредитиЗвітність
65Залік

Лекції

СеместрК-сть годинЛекторГрупа(и)
632професор, ст. наук. співробітник Жолткевич Г. М.ПМі-34, ПМі-35, ПМі-36

Лабораторні

СеместрК-сть годинГрупаВикладач(і)
632ПМі-34професор, ст. наук. співробітник Жолткевич Г. М.
ПМі-35професор, ст. наук. співробітник Жолткевич Г. М.
ПМі-36професор, ст. наук. співробітник Жолткевич Г. М.

Опис курсу

Курс «Лямбда-числення та функціональне програмування» спрямований на глибоке вивчення декларативної парадигми та математичних основ програмування. Програма поєднує теоретичний аналіз фундаментальних концепцій з практичним застосуванням сучасних інструментів розробки.

Теоретичний фундамент: Центральне місце в курсі посідає лямбда-числення, яке розглядається як найменша мова програмування. Студенти вивчають синтаксичні правила, поняття вільних і зв’язаних змінних, а також ключові перетворення термів: альфа-конверсію, бета-редукцію та ета-конверсію. Окрема увага приділяється кодуванню Черча, теоремі Черча-Росера та комбінаторам нерухомої точки для реалізації рекурсії.

Концепції функціонального програмування: Курс розкриває переваги чистих функцій та відсутності побічних ефектів, що дозволяє замінювати виклик функції її результатом для оптимізації коду. Програма охоплює вивчення алгебраїчних типів даних, алгоритму виведення типів Хіндлі-Мілнора, а також механізмів співставлення із зразком (pattern matching).

Практичні навички та інструментарій: Практична частина передбачає реалізацію лямбда-термів мовою Python та опанування мови Haskell. Студенти навчаються використовувати:

  • Каррування та часткове застосування функцій;
  • Функції вищого порядку (map, filter, fold);
  • Механізми параметричного та спеціального поліморфізму через класи типів.

Просунуті абстракції: Завершальна частина присвячена обчисленням у контексті, що включає роботу з функторами, аплікативними функторами та монадами. Розглядається використання монад Maybe та Either для безпечної обробки помилок, а також монади IO для керування введенням-виведенням.

Рекомендована література

Основна література:

  1. Hindley J. and Seldin J. Lambda-Calculus and Combinators, an Introduction. https://anggtwu.net/tmp/hindley_seldin__lambda-calculus_and_combinators_an_introduction.pdf
  2. Allen C. and Moronuki J. Haskell Programming: From First Principles. https://github.com/clojurians-org/haskell-ebook/blob/master/Learn%20You%20a%20Haskell%20for%20Great%20Good!%20A%20Beginner’s%20Guide.pdf
  3. Lipovaca M. Learn You a Haskell for Great Good!
    https://github.com/clojurians-org/haskell-ebook/blob/master/Learn%20You%20a%20Haskell%20for%20Great%20Good!%20A%20Beginner’s%20Guide.pdf
  4. Rojas R. A Tutorial Introduction to the Lambda Calculus.
    https://personal.utdallas.edu/~gupta/courses/apl/lambda.pdf
  5. Jaskuła T. Can programming be liberated from the von Neumann style?
    https://medium.com/luteceo-software-chemistry/can-programming-be-liberated-from-the-von-neumann-style-932ba107402b

Силабус: Лямбда числення та функціональне програмування (2025-2026)

Завантажити силабус