Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Monad (category theory)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Monads used in denotational semantics=== {{See also|Monad (functional programming)}} The following monads over the category of sets are used in [[denotational semantics]] of [[Imperative programming language|imperative programming languages]], and analogous constructions are used in functional programming. ====The maybe monad==== The endofunctor of the '''maybe''' or '''partiality''' monad adds a disjoint point:{{sfn|Riehl|2017|p=155}} :<math>(-)_{*}: \mathbf{Set}\to\mathbf{Set}</math> :<math>X\mapsto X\cup\{*\}</math> The unit is given by the inclusion of a set <math>X</math> into <math>X_*</math>: :<math>\eta_X: X\to X_{*}</math> :<math>x\mapsto x</math> The multiplication maps elements of <math>X</math> to themselves, and the two disjoint points in <math>(X_{*})_{*}</math> to the one in <math>X_{*}</math>. In both functional programming and denotational semantics, the maybe monad models [[Partial function|partial computations]], that is, computations that may fail. ====The state monad==== {{Expand section|date=February 2023|with=describe multiplication}} Given a set <math>S</math>, the endofunctor of the '''state monad''' maps each set <math>X</math> to the set of functions <math>S\to S \times X</math>. The component of the unit at <math>X</math> maps each element <math>x\in X</math> to the function :<math>\eta_X(x): S\to S\times X</math> :<math>s\mapsto (s, x)</math> The multiplication maps the function <math>f: S\to S\times (S\to S\times X), s\mapsto (s',f')</math> to the function :<math>\mu_X(f): S\to S\times X</math> :<math>s\mapsto f'(s')</math> In functional programming and denotational semantics, the state monad models [[State (computer science)|stateful computations]]. ====The environment monad==== {{Expand section|date=February 2023|with=describe multiplication}} Given a set <math>E</math>, the endofunctor of the '''reader''' or '''environment monad''' maps each set <math>X</math> to the set of functions <math>E\to X</math>. Thus, the endofunctor of this monad is exactly the [[hom functor]] <math>\mathrm{Hom}(E, -)</math>. The component of the unit at <math>X</math> maps each element <math>x\in X</math> to the [[constant function]] <math>e\mapsto x</math>. In functional programming and denotational semantics, the environment monad models computations with access to some read-only data. ====The list and set monads==== {{Expand section|date=February 2023|with=describe multiplication}} The '''list''' or '''nondeterminism monad''' maps a set ''X'' to the set of finite [[Sequence|sequences]] (i.e., [[List (abstract data type)|lists]]) with elements from ''X''. The unit maps an element ''x'' in ''X'' to the singleton list [x]. The multiplication concatenates a list of lists into a single list. In functional programming, the list monad is used to model [[Nondeterministic model of computation|nondeterministic computations]]. The covariant powerset monad is also known as the '''set monad''', and is also used to model nondeterministic computation.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)