upy
authorMart Lubbers <mart@martlubbers.net>
Wed, 6 Apr 2016 07:31:49 +0000 (09:31 +0200)
committerMart Lubbers <mart@martlubbers.net>
Wed, 6 Apr 2016 07:31:49 +0000 (09:31 +0200)
long/long.tex

index a9d5f44..7bcc377 100644 (file)
@@ -1,8 +1,6 @@
 %&long
 \begin{document}
 %&long
 \begin{document}
-
 \maketitle
 \maketitle
-
 \tableofcontents
 
 \section{Introduction}
 \tableofcontents
 
 \section{Introduction}
 \emph{Program Design Calculi} which was a collection of lecture notes
 accompanying the \emph{Marktoberdorf} summer school in 1992. Later it was
 reissued in \emph{Springer}s \emph{Advanced Functional Programming} book which
 \emph{Program Design Calculi} which was a collection of lecture notes
 accompanying the \emph{Marktoberdorf} summer school in 1992. Later it was
 reissued in \emph{Springer}s \emph{Advanced Functional Programming} book which
-presents the tutorials from a spring school in Sweden in 1995. 
-
-The notes were written to introduce the reader to the idea of a Monad usable in
-a functional programming context. Where monads are already defined and studied
-in category theory in the early fifties. Moggi et al.\ were the first in 1988
-to see the usefulness in computer science and in particular functional
-programming. At the time of writing this paper was introducing state of the art
-research which later became the preferred way of dealing with side-effects in a
-pure language. The paper familiarized readers with the concepts while only
-requiring basic knowledge in functional programming.
+presents the tutorials from a spring school situated in Sweden in 1995. 
+
+The notes were written to introduce the reader to the monadic design pattern in
+functional programming. Monads were already defined and studied
+in category theory in the early 1950s but only in the 1988 it was first linked
+to computer science. Moggi et al.\ were the first to see the usefulness in
+computer science and in particular functional programming. At the time of
+writing this paper was introducing state of the art research which later became
+the preferred way of dealing with side-effects in a pure language. The paper
+familiarized readers with the concepts while only requiring basic knowledge in
+functional programming.
 
 \subsection{Impact}
 While Wadler had already published a lot about monads this turned out to be one
 
 \subsection{Impact}
 While Wadler had already published a lot about monads this turned out to be one
@@ -30,7 +29,7 @@ part of the small group of researchers that kick-started the use of monads in
 functional programming.
 
 The paper has been cited over $676$ times over the past $23$ years resulting in
 functional programming.
 
 The paper has been cited over $676$ times over the past $23$ years resulting in
-a $\pm 30$ cites per year. It is cited as the de-facto monad introducing paper.
+a around cites per year. It is cited as the de-facto monad introducing paper.
 In 2015 and 2016 the paper has already been cited numerous times in topics
 including but not limited to: Introducing new monad types, generic programming,
 designing modular design specific languages, concurrency frameworks in
 In 2015 and 2016 the paper has already been cited numerous times in topics
 including but not limited to: Introducing new monad types, generic programming,
 designing modular design specific languages, concurrency frameworks in
@@ -39,13 +38,15 @@ functional languages and probabilistic computing.
 \section{Proposal and evidence}
 \subsection{Proposal}
 Wadler proposes to capture side-effects in monads. A monad is a structure
 \section{Proposal and evidence}
 \subsection{Proposal}
 Wadler proposes to capture side-effects in monads. A monad is a structure
-containing a monad type:
-\CI{:: M a}\\
-Secondly a monad contains a function to lift a value to the monadic domain:
-\CI{unit :: a -> M a}\\
-Lastly a monad contains the function that transforms \CI{a} into \CI{b} while
-capturing the possible side-effects in \CI{M}:
-\CI{(>>=) infixl 1 :: (M a) (a -> M b) -> M b}
+containing three components. The first component is the type itself called
+\CI{:: M a}
+
+The second component is a function that lifts a certain value to the monadic
+domain and is defined as \CI{unit :: a -> M a}
+
+Lastly the structure contains a function which transforms a certain \CI{a} into
+a certain \CI{b} while capturing the possible side-effects in \CI{M} and is
+defined as: \CI{(>>=) infixl 1 :: (M a) (a -> M b) -> M b}
 
 When this structure adheres certain laws they are very useful in capturing
 side-effects that would otherwise be difficult to handle in an impure language.
 
 When this structure adheres certain laws they are very useful in capturing
 side-effects that would otherwise be difficult to handle in an impure language.