Лямбда-числення і функціональне програмування (кн дввс)
Тип: На вибір студента
Кафедра: інформаційних систем
Навчальний план
| Семестр | Кредити | Звітність |
| 6 | 5 | Залік |
Лекції
| Семестр | К-сть годин | Лектор | Група(и) |
| 6 | 32 | професор, ст. наук. співробітник Жолткевич Г. М. | ПМі-34, ПМі-35, ПМі-36 |
Лабораторні
| Семестр | К-сть годин | Група | Викладач(і) |
| 6 | 32 | ПМі-34 | професор, ст. наук. співробітник Жолткевич Г. М. |
| ПМі-35 | професор, ст. наук. співробітник Жолткевич Г. М. | ||
| ПМі-36 | професор, ст. наук. співробітник Жолткевич Г. М. |
Опис курсу
Курс «Лямбда-числення та функціональне програмування» спрямований на глибоке вивчення декларативної парадигми та математичних основ програмування. Програма поєднує теоретичний аналіз фундаментальних концепцій з практичним застосуванням сучасних інструментів розробки.
Теоретичний фундамент: Центральне місце в курсі посідає лямбда-числення, яке розглядається як найменша мова програмування. Студенти вивчають синтаксичні правила, поняття вільних і зв’язаних змінних, а також ключові перетворення термів: альфа-конверсію, бета-редукцію та ета-конверсію. Окрема увага приділяється кодуванню Черча, теоремі Черча-Росера та комбінаторам нерухомої точки для реалізації рекурсії.
Концепції функціонального програмування: Курс розкриває переваги чистих функцій та відсутності побічних ефектів, що дозволяє замінювати виклик функції її результатом для оптимізації коду. Програма охоплює вивчення алгебраїчних типів даних, алгоритму виведення типів Хіндлі-Мілнора, а також механізмів співставлення із зразком (pattern matching).
Практичні навички та інструментарій: Практична частина передбачає реалізацію лямбда-термів мовою Python та опанування мови Haskell. Студенти навчаються використовувати:
- Каррування та часткове застосування функцій;
- Функції вищого порядку (map, filter, fold);
- Механізми параметричного та спеціального поліморфізму через класи типів.
Просунуті абстракції: Завершальна частина присвячена обчисленням у контексті, що включає роботу з функторами, аплікативними функторами та монадами. Розглядається використання монад Maybe та Either для безпечної обробки помилок, а також монади IO для керування введенням-виведенням.
Рекомендована література
Основна література:
- Hindley J. and Seldin J. Lambda-Calculus and Combinators, an Introduction. https://anggtwu.net/tmp/hindley_seldin__lambda-calculus_and_combinators_an_introduction.pdf
- 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
- 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 - Rojas R. A Tutorial Introduction to the Lambda Calculus.
https://personal.utdallas.edu/~gupta/courses/apl/lambda.pdf - 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