Монада — абстрактний тип данних в функціональному програмуванні, що походить від відповідного терміну з теорії категорій. В функціональних мовах[які?] найчастіше використовується в ролі синтаксичного цукру для написання імперативної логіки (тобто тої, що має визначений порядок виконання операцій) або в якості механізму обробки помилок.[1][2]
Основними застосуваннями монад у функційному програмуванні є визначення операцій вводу/виводу (I/O) та зміни стану уникаючи побічних ефектів[3]. Принцип дії монад полягає в тому, що, хоча функція і не може робити побічний ефект напряму, вона може створювати значення, що описує бажаний побічний ефект, і яке можна використати коли потрібно. Однак, I/O та керування станом в жодному разі не є єдиними способами використання монад. Вони корисні тоді, коли розробник бажає описати обчислення в чисто функційному стилі, виконуючи паралельно інші обчислення.
Інший варіант застовування монади - механізм обробки помилок. В Гаскелі для таких цілей використовується монада Maybe. Вона має два стани: «Just» та «Nothing». Перший виступає в ролі обгортки, тобто містить всередині себе певне значення яке повертає функція. Другий стан символізує відсутність даних або помилку. Використовуючи властивість прив'язки монад можна передавати значення в обгортці, що зменшує кількість надлишкового коду.
Функційна мова програмування Гаскель інтенсивно використовує монади та має синтаксичні конструкції для полегшення роботи з ними.
Приклади
Див. також
Примітки
Посилання