Talk:Monads/Maybe monad: Difference between revisions

m
 
(4 intermediate revisions by the same user not shown)
Line 35:
A monad consists of a pair of functions (specialised for a particular data-type or other computational context), which simplify the pipelining of computations which are wrapped in that context.
 
The two functions are sometimes called return and bind, or pure and bind, or '''η''' and '''μ'''.
* pure/return simply wraps a raw value in a context (for example, wraps a number in a list).
* bind takes two arguments: (1) a wrapped or context-embedded value, and (2) a function which applies to a raw value but returns a wrapped value.
Line 49:
(The writer (or supplied write-and-wrap function) drafts a response, and places it in a new envelope, continuing the chain of correspondence)
 
The data-type or context (the envelope or functor) is not itself the monad. The monad isconsists of the envelope-typefunctor-specific pair of functions which abstract away the boiler-plate required for wrapping and unwrapping, (extraction from a context, and embedding in that context), to facilitate a chain of computations that are embedded in some enclosing context.
 
A little more formally [https://en.wikipedia.org/wiki/Monad_(category_theory)#Formal_definition] (see definition 1.5 in Moggi, which refers in turn to MacLane) A monad over a category C is a triple (T, '''η''', '''μ''') where T:C -> C is the functor (for programming purposes, the context of the computation), '''η''' is the function which simply 'lifts' a raw value into that context (places a letter in an envelope), and '''μ''' is the function from the incoming envelope containing one message, to the outgoing envelope, which contains the new derived (responding) message. [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 15:12, 3 October 2019 (UTC)
 
===Foundational references===
 
S. MacLane. Categories for the Working Mathematician. Springer Verlag, 1971.
[https://core.ac.uk/download/pdf/21173011.pdf| Moggi 1991, Notions of computation and monads]
 
[https://core.ac.uk/download/pdf/21173011.pdf | Moggi 1991, Notions of computation and monads]
 
[https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf | Wadler 1992, Monads for functional programming]
9,655

edits