Монади (програмування)
Матеріал з Вікіпедії — вільної енциклопедії.
Деякі із функціональних мов програмування використовують монади [1] [2] для структурування програм, що містять операції, що мають виконуватись в певному порядку. Назва монада походить із теорії категорій, розділу математики що описує шаблони, що можуть застосовуватись до різних розділів математики.
Основними застосуваннями монадів в функціональному програмуванні є визначення операцій вводу/виводу (I/O) та зміни в станах без використання засобів мов програмування що чинять побочні ефекти [3]. Принцип дії монадів полягає в тому, що, хоча функція і не може робити побічний ефект напряму, вона може створювати значення, що описує бажаний побічний ефект, і яке можна використати коли потрібно. Однак, I/O та керування станом в жодному разі не є єдиними способами використання монадів. Вони корисні тоді, коли розробник бажає описати обчислення в чисто функціональному стилі, виконуючи паралельно інші обчислення.
Мова програмування Хаскель є функціональною мовою програмування, що інтенсивно використовує монади, та має синтаксичні конструкції для полегшення роботи з монадами.
[ред.] Джерела інформації
- ↑ Philip Wadler. Comprehending Monads. Proceedings of the 1990 ACM Conference on LISP and Functional Programming, Nice. 1990.
- ↑ 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
- Monads in functional programming, Wikipedia, англ., 22 лютого 2007.
[ред.] Дивіться також
[ред.] Ресурси інтернет
- A (hopefully) painless introduction to monads
- What the hell are Monads?
- 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
- "Monads for Functional Programming" (PDF), Philip Wadler
- A tour of the Haskell Monad functions, Henk-Jan van Tuyl
- The Haskell Programmer's Guide to the IO Monad — Don't Panic (PDF)
- Monads in Ruby