Монади (програмування)
Деякі із функційних мов програмування[які?] використовують монади[1][2] для структурування програм, що містять операції, що мають виконуватись в певному порядку. Назва монада походить із теорії категорій, розділу математики, що описує шаблони, які можуть бути застосовані до різних розділів математики.
Основними застосуваннями монад у функційному програмуванні є визначення операцій вводу/виводу (I/O) та зміни в станах без використання засобів мов програмування, що чинять побічні ефекти[3]. Принцип дії монад полягає в тому, що, хоча функція і не може робити побічний ефект напряму, вона може створювати значення, що описує бажаний побічний ефект, і яке можна використати коли потрібно. Однак, I/O та керування станом в жодному разі не є єдиними способами використання монад. Вони корисні тоді, коли розробник бажає описати обчислення в чисто функційному стилі, виконуючи паралельно інші обчислення.
Функційна мова програмування Гаскель інтенсивно використовує монади та має синтаксичні конструкції для полегшення роботи з ними.
Див. також
Примітки
- Philip Wadler (1990). Comprehending Monads. Nice. Proceedings of the 1990 ACM Conference on LISP and Functional Programming
- Philip Wadler. The Essence of Functional Programming. Conference Record of the Nineteenth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 1992.
- Simon L. Peyton Jones, Philip Wadler. Imperative Functional Programming. Conference record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina. 1993
Посилання
- A (hopefully) painless introduction to monads. Архів оригіналу за 17 лютого 2007.
- What the hell are Monads?. Архів оригіналу за 9 травня 2008.
- You Could Have Invented Monads! (And Maybe You Already Have.), a gentle introduction.
- All About Monads.
- Monads as Containers.
- Monads for the Working Haskell Programmer.
- Philip Wadler. Monads for Functional Programming.
- Henk-Jan van Tuyl. A tour of the Haskell Monad functions.
- The Haskell Programmer's Guide to the IO Monad — Don't Panic. Архів оригіналу за 24 березня 2015.
- Monads in Ruby. Архів оригіналу за 20 липня 2006.