Монади (програмування)
Деякі із функційних мов програмування використовують монади [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
