Монади (програмування)
Деякі із функційних мов програмування[які?] використовують монади[1][2] для структурування програм, що містять операції, що мають виконуватись в певному порядку. Назва монада походить із теорії категорій, розділу математики, що описує шаблони, які можуть бути застосовані до різних розділів математики.
Основними застосуваннями монад у функційному програмуванні є визначення операцій вводу/виводу (I/O) та зміни в станах без використання засобів мов програмування, що чинять побічні ефекти[3]. Принцип дії монад полягає в тому, що, хоча функція і не може робити побічний ефект напряму, вона може створювати значення, що описує бажаний побічний ефект, і яке можна використати коли потрібно. Однак, I/O та керування станом в жодному разі не є єдиними способами використання монад. Вони корисні тоді, коли розробник бажає описати обчислення в чисто функційному стилі, виконуючи паралельно інші обчислення.
Функційна мова програмування Гаскель інтенсивно використовує монади та має синтаксичні конструкції для полегшення роботи з ними.
Приклади[ред. | ред. код]
Див. також[ред. | ред. код]
Примітки[ред. | ред. код]
- ↑ Philip Wadler (1990). Comprehending Monads. Nice. Архів оригіналу за 29 березня 2008. Процитовано 22 лютого 2007. Proceedings of the 1990 ACM Conference on LISP and Functional Programming
- ↑ Philip Wadler. The Essence of Functional Programming [Архівовано 10 лютого 2007 у Wayback Machine.]. 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 [Архівовано 16 червня 2008 у Wayback Machine.]. 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. Архів оригіналу за 24 грудня 2006. Процитовано 22 лютого 2007.
- All About Monads. Архів оригіналу за 19 січня 2007. Процитовано 22 лютого 2007.
- Monads as Containers. Архів оригіналу за 11 жовтня 2006. Процитовано 22 лютого 2007.
- Monads for the Working Haskell Programmer. Архів оригіналу за 19 лютого 2007. Процитовано 22 лютого 2007.
- Philip Wadler. Monads for Functional Programming. Архів оригіналу за 17 квітня 2007. Процитовано 22 лютого 2007.
- Henk-Jan van Tuyl. A tour of the Haskell Monad functions. Архів оригіналу за 10 березня 2007. Процитовано 22 лютого 2007.
- The Haskell Programmer's Guide to the IO Monad — Don't Panic. Архів оригіналу за 24 березня 2015.
- Monads in Ruby. Архів оригіналу за 20 липня 2006.
![]() |
Це незавершена стаття з інформатики. Ви можете допомогти проєкту, виправивши або дописавши її. |
|