Permalink
Browse files

Added discussion of takeout-based analysis of monads

  • Loading branch information...
1 parent 62ca88f commit 8498f3294c8e8e52fe526d6dc53956bc18237b7a @leithaus committed Jun 25, 2010
View
2 src/main/book/content/bibliography/monadic.aux
@@ -1,6 +1,6 @@
\relax
\@setckpt{bibliography/monadic}{
-\setcounter{page}{123}
+\setcounter{page}{125}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
View
30 src/main/book/content/chapters/eight/ch.aux
@@ -1,22 +1,22 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {8}Domain model, storage and state}{107}{chapter.8}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {8}Domain model, storage and state}{109}{chapter.8}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{107}{section.8.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{107}{subsection.8.1.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{107}{subsection.8.1.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}ORM}{107}{subsection.8.1.3}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{107}{section.8.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{107}{subsection.8.2.1}}
-\@writefile{toc}{\contentsline {subsubsection}{Open source implementations}{107}{section*.62}}
-\@writefile{toc}{\contentsline {paragraph}{ScalaQuery}{107}{section*.63}}
-\@writefile{toc}{\contentsline {paragraph}{Squeryl}{107}{section*.64}}
-\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{108}{figure.8.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.3}Continuations revisited}{108}{section.8.3}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}Stored state}{108}{subsection.8.3.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Transactions}{108}{subsection.8.3.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{109}{section.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{109}{subsection.8.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{109}{subsection.8.1.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}ORM}{109}{subsection.8.1.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{109}{section.8.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{109}{subsection.8.2.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Open source implementations}{109}{section*.62}}
+\@writefile{toc}{\contentsline {paragraph}{ScalaQuery}{109}{section*.63}}
+\@writefile{toc}{\contentsline {paragraph}{Squeryl}{109}{section*.64}}
+\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{110}{figure.8.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.3}Continuations revisited}{110}{section.8.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}Stored state}{110}{subsection.8.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Transactions}{110}{subsection.8.3.2}}
\@setckpt{chapters/eight/ch}{
-\setcounter{page}{109}
+\setcounter{page}{111}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
View
14 src/main/book/content/chapters/nine/ch.aux
@@ -1,14 +1,14 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {9}Putting it all together}{109}{chapter.9}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {9}Putting it all together}{111}{chapter.9}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {9.1}Our web application end-to-end}{109}{section.9.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.2}Deploying our application}{109}{section.9.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{109}{subsection.9.2.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.3}From one web application to web framework}{109}{section.9.3}}
-\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{110}{figure.9.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.1}Our web application end-to-end}{111}{section.9.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.2}Deploying our application}{111}{section.9.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{111}{subsection.9.2.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.3}From one web application to web framework}{111}{section.9.3}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{112}{figure.9.1}}
\@setckpt{chapters/nine/ch}{
-\setcounter{page}{111}
+\setcounter{page}{113}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
View
20 src/main/book/content/chapters/seven/ch.aux
@@ -18,17 +18,17 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Eilenberg-Moore}{105}{subsection.7.3.2}}
\@writefile{toc}{\contentsline {section}{\numberline {7.4}Monad as container}{105}{section.7.4}}
\@writefile{toc}{\contentsline {section}{\numberline {7.5}Monads and take-out}{105}{section.7.5}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Option as container}{106}{subsection.7.5.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{106}{subsection.7.5.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{106}{subsection.7.5.3}}
-\@writefile{toc}{\contentsline {subsubsection}{Intuitionistic discipline}{106}{section*.60}}
-\@writefile{toc}{\contentsline {subsubsection}{Linear discipline}{106}{section*.61}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.6}Co-monad and take-out}{106}{section.7.6}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.7}Hopf structure}{106}{section.7.7}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.8}Container and control}{106}{section.7.8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{106}{subsection.7.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Option as container}{107}{subsection.7.5.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{108}{subsection.7.5.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{108}{subsection.7.5.3}}
+\@writefile{toc}{\contentsline {subsubsection}{Intuitionistic discipline}{108}{section*.60}}
+\@writefile{toc}{\contentsline {subsubsection}{Linear discipline}{108}{section*.61}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.6}Co-monad and take-out}{108}{section.7.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.7}Hopf structure}{108}{section.7.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.8}Container and control}{108}{section.7.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{108}{subsection.7.8.1}}
\@setckpt{chapters/seven/ch}{
-\setcounter{page}{107}
+\setcounter{page}{109}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
View
112 src/main/book/content/chapters/seven/monad-and-comonad.tex
@@ -1,7 +1,119 @@
\section{Monads and take-out}
+In the previous sections we've explored the idea of collections as
+monads. Likewise, we've suggested that that you can turn this
+interpretation around in the sense that you can use the notion of
+container to bootstrap an understanding of the notion of monad. In
+this section we expand this approach. More specifically, we begin with
+the notion of container as a first approximation of the notion of
+monad and then notice (some rather subtle) differences between the two
+ideas which allows us to refine our understanding of monad, and -- as
+it turns out -- our understanding of container.
+
+As we've observed before, intuitively a monad is like a ``box'' into
+which we can put things. One of the most important things we can put
+into ``boxes'' like this is other ``boxes''. The monad laws govern the
+nesting of boxes and as nesting is one of the core concepts underlying
+a notion of composition, we see that monads capture some fundamental
+aspects of the notion of composition. Monads provide a minimalist
+characterization of composition. As software engineers we must pay
+attention to this a proposal of this kind -- minimalist, yet evidently
+rich -- because composition is really one of the few tools we have to
+manage complexity. There are several ways, however, that the notion of
+composition codified by the theory of monads seems to break with our
+intuitive sense of what a physical container is.
+
+There's a favorite childhood tale that illustrates one of the vital
+differences.
+
+\begin{quotation}
+ When Eeyore saw the pot, he became quite excited.
+ “Why!” he said. “I believe my Balloon will just go into that Pot!”
+ “Oh, no, Eeyore,” said Pooh. “Balloons are much too big to go into Pots. What you do with a balloon is, you hold the balloon -”
+ “Not mine,” said Eeyore proudly. “Look, Piglet!”
+ And as Piglet looked sorrowfully round, Eeyore picked the balloon up with his teeth, and placed it carefully in the pot; picked it out and put it on the ground; and then picked it up again and put it carefully back.
+ “So it does!” said Pooh. “It goes in!”
+ “So it does!” said Piglet. “And it comes out!”
+ “Doesn’t it?” said Eeyore. “It goes in and out like anything.”
+\end{quotation}
+
+Gloomy Eeyore takes a surprising delight in the configuration that
+allows him to put things into his very useful pot and then take them
+out again. In this sense Eeyore's honey pot was strictly richer, as an
+idea, than a monad because a monad, by itself, \emph{does not support
+ an operation to take things out of the box}. Things go in, but they
+don't go out. In this sense a monad -- without any additional gadetry
+-- is more like a piggybank than Eeyore's honey pot. This question of
+``takeout'' turns out to have some currency as it helps us classify
+and characterize a number of situations in the design of data
+structures and control flow -- common to computer scientists and
+professional programmers alike.
+
\subsection{Option as container}
+To see this idea at work, recall the oft used example of the
+\lstinline[language=Scala,mathescape=true]!Option! monad. When viewed
+in terms of the question of ``takeout'' we see several things at
+once. First of all, if we are in the role of Eeyore and put something
+-- say the \lstinline[language=Scala,mathescape=true]!String!
+\lstinline[language=Scala,mathescape=true]!"ballon"! -- into our very
+useful pot, say an \lstinline[language=Scala,mathescape=true]!Option!,
+in \lstinline[language=Scala,mathescape=true]!val pigletsGift = Some( "balloon" )!, then we know that we can take it out:
+\lstinline[language=Scala,mathescape=true]!pigletsGift match { case Some( s ) => s }!. On the other hand, if we play in the role of Christopher Robin, and Eeyore hands us a very useful pot, i.e. something typed like \lstinline[language=Scala,mathescape=true]!pigletsGift : Option[String]!, then we cannot know whether there is something in the pot to take out or not \emph{without looking into the pot}: \lstinline[language=Scala,mathescape=true]!pigletsGift match { case Some( s ) => s case None => "no balloon" }!.
+
+Notice that nearly all the common containers,
+\lstinline[language=Scala,mathescape=true]!Set!,
+\lstinline[language=Scala,mathescape=true]!List!, etc, have this
+property. If we are in the role of constructing the container, we know
+whether or not the container enjoys any contents; but, if we are in
+the role of recipient, we cannot know if the container enjoys contents
+without looking inside.
+
+Now, this all may seem like plain common sense until we start to put
+it in context. As we will see in the next section, lots of monads very
+rightly do not support any sort of takeout whatsoever. This
+differentiates these situations of structure and control from the
+sorts we find with the commonly encountered containers. These
+situations and the dividing line between them turn out to be
+intimately connected with the notion of transaction!
+
+On the flip side, there are very specialized containers and control
+disciplines in which every act of insertion is matched by an act of
+removal. Lest this seem strange, just think about the \emph{syntactic}
+structure of containers like
+\lstinline[language=Scala,mathescape=true]!List!s. For a
+\lstinline[language=Scala,mathescape=true]!List! to be well formed
+every left paren, \lstinline[language=Scala,mathescape=true]!(!, must
+eventually be matched by a right paren,
+\lstinline[language=Scala,mathescape=true]!)!. This property of
+matching pairs is really a deep, but common design pattern. When we
+think about the design of messaging systems, one of the properties we
+would like to ensure is that every request is eventually answered by a
+response. Protocols like \texttt{HTTP} are very draconian in the way
+they guarantee this property. It's not possible to ``nest''
+\texttt{HTTP} request/response pairs. This design choice forces a kind
+of ``statelessness'' on the protocol that doesn't have to be. It also
+gives rise to all kinds of work arounds to introduce sessions that
+give the modern programmer, as well as the modern user, all kinds of
+headaches. After all, why should Grandma ever have to be worried about
+``cleaning cookies out of the cache'' -- whatever that is! -- when all
+she wants to do is use the browser to book tickets to the movies for
+her grandkids?
+
+Intriguingly, the interplay between these very practical concerns and
+very deep mathematical patterns doesn't stop there. It turns out that
+this takeout-based classification scheme
+
+\begin{itemize}
+ \item contents go in, but don't come out
+ \item asymmetric roles of container provider and container recipient
+ \item matched pair discipline
+\end{itemize}
+
+is closely related to a famous historical development in logic! As
+we'll see below, the latter two categories have to do with
+\emph{intuitionistic} and \emph{linear} logics.
+
\subsection{I/O monad for contrast}
\subsection{Matching gazintas and gazoutas}
View
52 src/main/book/content/chapters/ten/ch.aux
@@ -1,33 +1,33 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {10}The semantic web}{111}{chapter.10}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {10}The semantic web}{113}{chapter.10}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {10.1}Referential transparency}{111}{section.10.1}}
-\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{112}{figure.10.1}}
-\@writefile{toc}{\contentsline {paragraph}{A little motivation}{112}{section*.65}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.2}Composing monads}{113}{section.10.2}}
-\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{114}{section*.66}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.3}Semantic application queries}{115}{section.10.3}}
-\@writefile{toc}{\contentsline {subsubsection}{An alternative presentation}{115}{section*.67}}
-\@writefile{toc}{\contentsline {paragraph}{Logic: the set monad as an algebra}{116}{section*.68}}
-\@writefile{toc}{\contentsline {paragraph}{Primes: an application}{117}{section*.69}}
-\@writefile{toc}{\contentsline {paragraph}{Summary}{117}{section*.70}}
-\@writefile{toc}{\contentsline {subsubsection}{Patterns}{118}{section*.71}}
-\@writefile{toc}{\contentsline {subsubsection}{A first mini-query language}{118}{section*.72}}
-\@writefile{toc}{\contentsline {subsubsection}{Iterating the design pattern}{118}{section*.73}}
-\@writefile{toc}{\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{119}{section*.74}}
-\@writefile{toc}{\contentsline {paragraph}{Examples}{119}{section*.75}}
-\@writefile{toc}{\contentsline {subsubsection}{Logical semantics}{120}{section*.76}}
-\@writefile{toc}{\contentsline {subsubsection}{Other collection monads, other logics}{120}{section*.77}}
-\@writefile{toc}{\contentsline {paragraph}{Stateful collections}{120}{section*.78}}
-\@writefile{lof}{\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{121}{figure.10.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{122}{subsection.10.3.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.4}Searching for programs}{122}{section.10.4}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{122}{subsection.10.4.1}}
-\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{122}{section*.79}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.2}Examples}{122}{subsection.10.4.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.1}Referential transparency}{113}{section.10.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{114}{figure.10.1}}
+\@writefile{toc}{\contentsline {paragraph}{A little motivation}{114}{section*.65}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.2}Composing monads}{115}{section.10.2}}
+\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{116}{section*.66}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.3}Semantic application queries}{117}{section.10.3}}
+\@writefile{toc}{\contentsline {subsubsection}{An alternative presentation}{117}{section*.67}}
+\@writefile{toc}{\contentsline {paragraph}{Logic: the set monad as an algebra}{118}{section*.68}}
+\@writefile{toc}{\contentsline {paragraph}{Primes: an application}{119}{section*.69}}
+\@writefile{toc}{\contentsline {paragraph}{Summary}{119}{section*.70}}
+\@writefile{toc}{\contentsline {subsubsection}{Patterns}{120}{section*.71}}
+\@writefile{toc}{\contentsline {subsubsection}{A first mini-query language}{120}{section*.72}}
+\@writefile{toc}{\contentsline {subsubsection}{Iterating the design pattern}{120}{section*.73}}
+\@writefile{toc}{\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{121}{section*.74}}
+\@writefile{toc}{\contentsline {paragraph}{Examples}{121}{section*.75}}
+\@writefile{toc}{\contentsline {subsubsection}{Logical semantics}{122}{section*.76}}
+\@writefile{toc}{\contentsline {subsubsection}{Other collection monads, other logics}{122}{section*.77}}
+\@writefile{toc}{\contentsline {paragraph}{Stateful collections}{122}{section*.78}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{123}{figure.10.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{124}{subsection.10.3.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.4}Searching for programs}{124}{section.10.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{124}{subsection.10.4.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{124}{section*.79}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.2}Examples}{124}{subsection.10.4.2}}
\@setckpt{chapters/ten/ch}{
-\setcounter{page}{123}
+\setcounter{page}{125}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
View
8 src/main/book/content/monadic.lof
@@ -24,9 +24,9 @@
\addvspace {10\p@ }
\contentsline {figure}{\numberline {7.1}{\ignorespaces Chapter map }}{100}{figure.7.1}
\addvspace {10\p@ }
-\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{108}{figure.8.1}
+\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{110}{figure.8.1}
\addvspace {10\p@ }
-\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{110}{figure.9.1}
+\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{112}{figure.9.1}
\addvspace {10\p@ }
-\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{112}{figure.10.1}
-\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{121}{figure.10.2}
+\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{114}{figure.10.1}
+\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{123}{figure.10.2}
View
126 src/main/book/content/monadic.log
@@ -1,4 +1,4 @@
-This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2010.3.17) 24 JUN 2010 06:05
+This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2010.3.17) 25 JUN 2010 11:11
entering extended mode
**monadic.tex
(./monadic.tex
@@ -1246,14 +1246,94 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
[103]
[104]) (./chapters/seven/container.tex) (./chapters/seven/monad-and-comonad.tex
-[105]) [106])
+[105]
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+Missing character: There is no � in font cmr12!
+ [106]
+Underfull \vbox (badness 10000) has occurred while \output is active []
+
+ [107])
+[108])
\openout2 = `chapters/eight/ch.aux'.
(./chapters/eight/ch.tex
Chapter 8.
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/M
-onadicDesignPatternsChapterMapFocus8.pdf, id=4657, 748.7975pt x 582.175pt>
+onadicDesignPatternsChapterMapFocus8.pdf, id=4665, 748.7975pt x 582.175pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/MonadicDesignPatternsChapterMapFocus8.pdf Graphic file (type pdf)
@@ -1265,48 +1345,48 @@ es/MonadicDesignPatternsChapterMapFocus8.pdf>
Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
(hyperref) removing `\lstinline' on input line 3.
-) (./chapters/eight/continuations-revisited.tex) [107
+) (./chapters/eight/continuations-revisited.tex) [109
-] [108 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/fi
+] [110 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/fi
gures/MonadicDesignPatternsChapterMapFocus8.pdf>])
\openout2 = `chapters/nine/ch.aux'.
(./chapters/nine/ch.tex
Chapter 9.
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/M
-onadicDesignPatternsChapterMapFocus9.pdf, id=4857, 751.80875pt x 580.1675pt>
+onadicDesignPatternsChapterMapFocus9.pdf, id=4866, 751.80875pt x 580.1675pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/MonadicDesignPatternsChapterMapFocus9.pdf Graphic file (type pdf)
<use /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figur
es/MonadicDesignPatternsChapterMapFocus9.pdf>
(./chapters/nine/putting-it-all-together.tex) (./chapters/nine/end-to-end.tex)
(./chapters/nine/deployment.tex) (./chapters/nine/application-to-framework.tex)
-[109
+[111
-]) [110 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/f
+]) [112 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/f
igures/MonadicDesignPatternsChapterMapFocus9.pdf>]
\openout2 = `chapters/ten/ch.aux'.
(./chapters/ten/ch.tex
Chapter 10.
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/M
-onadicDesignPatternsChapterMapFocus10.pdf, id=5051, 748.7975pt x 582.175pt>
+onadicDesignPatternsChapterMapFocus10.pdf, id=5059, 748.7975pt x 582.175pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/MonadicDesignPatternsChapterMapFocus10.pdf Graphic file (type pdf)
<use /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figur
-es/MonadicDesignPatternsChapterMapFocus10.pdf> [111
+es/MonadicDesignPatternsChapterMapFocus10.pdf> [113
-] [112 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/fi
+] [114 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/fi
gures/MonadicDesignPatternsChapterMapFocus10.pdf>]
Overfull \hbox (34.15538pt too wide) in paragraph at lines 90--94
[]\OT1/cmr/m/n/12 Intriguingly, mon-ads do not au-to-mat-i-cally com-pose. That
@@ -1316,11 +1396,11 @@ Overfull \hbox (34.15538pt too wide) in paragraph at lines 90--94
Underfull \vbox (badness 10000) has occurred while \output is active []
- [113]
-[114] (./chapters/ten/semantic-web.tex) (./chapters/ten/new-queries.tex
-[115] [116] [117] [118] [119]
+ [115]
+[116] (./chapters/ten/semantic-web.tex) (./chapters/ten/new-queries.tex
+[117] [118] [119] [120] [121]
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/M
-onadVisualization.pdf, id=5329, 822.07124pt x 615.29875pt>
+onadVisualization.pdf, id=5337, 822.07124pt x 615.29875pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/MonadVisualization.pdf Graphic file (type pdf)
@@ -1330,9 +1410,9 @@ Overfull \hbox (107.54865pt too wide) in paragraph at lines 311--312
[]
[]
-[120] [121 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/conten
+[122] [123 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/conten
t/figures/MonadVisualization.pdf>]) (./chapters/ten/search-for-behavior.tex)
-[122])
+[124])
\openout2 = `bibliography/monadic.aux'.
@@ -1347,16 +1427,16 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted.
)
Here is how much of TeX's memory you used:
- 10543 strings out of 94500
- 142681 string characters out of 1174973
+ 10546 strings out of 94500
+ 142713 string characters out of 1174973
211990 words of memory out of 1000000
- 11554 multiletter control sequences out of 10000+50000
+ 11555 multiletter control sequences out of 10000+50000
19826 words of font info for 75 fonts, out of 500000 for 2000
580 hyphenation exceptions out of 1000
34i,20n,56p,925b,1560s stack positions out of 1500i,500n,5000p,200000b,5000s
PDF statistics:
- 5462 PDF objects out of 300000
- 1838 named destinations out of 131072
+ 5470 PDF objects out of 300000
+ 1840 named destinations out of 131072
967 words of extra memory for PDF output out of 65536
</opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmbx8.pfb></opt/local/sha
re/texmf-dist/fonts/type1/bluesky/cm/cmsy8.pfb></opt/local/share/texmf-dist/fon
@@ -1377,4 +1457,4 @@ mti10.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmsy10.pfb></opt/
local/share/texmf-dist/fonts/type1/bluesky/cm/cmr10.pfb></opt/local/share/texmf
-dist/fonts/type1/bluesky/cm/cmr12.pfb></opt/local/share/texmf-dist/fonts/type1
/bluesky/cm/cmr17.pfb>
-Output written on monadic.pdf (133 pages, 5017545 bytes).
+Output written on monadic.pdf (135 pages, 5025775 bytes).
View
BIN src/main/book/content/monadic.pdf
Binary file not shown.
View
100 src/main/book/content/monadic.toc
@@ -126,53 +126,53 @@
\contentsline {subsection}{\numberline {7.3.2}Eilenberg-Moore}{105}{subsection.7.3.2}
\contentsline {section}{\numberline {7.4}Monad as container}{105}{section.7.4}
\contentsline {section}{\numberline {7.5}Monads and take-out}{105}{section.7.5}
-\contentsline {subsection}{\numberline {7.5.1}Option as container}{106}{subsection.7.5.1}
-\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{106}{subsection.7.5.2}
-\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{106}{subsection.7.5.3}
-\contentsline {subsubsection}{Intuitionistic discipline}{106}{section*.60}
-\contentsline {subsubsection}{Linear discipline}{106}{section*.61}
-\contentsline {section}{\numberline {7.6}Co-monad and take-out}{106}{section.7.6}
-\contentsline {section}{\numberline {7.7}Hopf structure}{106}{section.7.7}
-\contentsline {section}{\numberline {7.8}Container and control}{106}{section.7.8}
-\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{106}{subsection.7.8.1}
-\contentsline {chapter}{\numberline {8}Domain model, storage and state}{107}{chapter.8}
-\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{107}{section.8.1}
-\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{107}{subsection.8.1.1}
-\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{107}{subsection.8.1.2}
-\contentsline {subsection}{\numberline {8.1.3}ORM}{107}{subsection.8.1.3}
-\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{107}{section.8.2}
-\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{107}{subsection.8.2.1}
-\contentsline {subsubsection}{Open source implementations}{107}{section*.62}
-\contentsline {paragraph}{ScalaQuery}{107}{section*.63}
-\contentsline {paragraph}{Squeryl}{107}{section*.64}
-\contentsline {section}{\numberline {8.3}Continuations revisited}{108}{section.8.3}
-\contentsline {subsection}{\numberline {8.3.1}Stored state}{108}{subsection.8.3.1}
-\contentsline {subsection}{\numberline {8.3.2}Transactions}{108}{subsection.8.3.2}
-\contentsline {chapter}{\numberline {9}Putting it all together}{109}{chapter.9}
-\contentsline {section}{\numberline {9.1}Our web application end-to-end}{109}{section.9.1}
-\contentsline {section}{\numberline {9.2}Deploying our application}{109}{section.9.2}
-\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{109}{subsection.9.2.1}
-\contentsline {section}{\numberline {9.3}From one web application to web framework}{109}{section.9.3}
-\contentsline {chapter}{\numberline {10}The semantic web}{111}{chapter.10}
-\contentsline {section}{\numberline {10.1}Referential transparency}{111}{section.10.1}
-\contentsline {paragraph}{A little motivation}{112}{section*.65}
-\contentsline {section}{\numberline {10.2}Composing monads}{113}{section.10.2}
-\contentsline {subsubsection}{Preliminary}{114}{section*.66}
-\contentsline {section}{\numberline {10.3}Semantic application queries}{115}{section.10.3}
-\contentsline {subsubsection}{An alternative presentation}{115}{section*.67}
-\contentsline {paragraph}{Logic: the set monad as an algebra}{116}{section*.68}
-\contentsline {paragraph}{Primes: an application}{117}{section*.69}
-\contentsline {paragraph}{Summary}{117}{section*.70}
-\contentsline {subsubsection}{Patterns}{118}{section*.71}
-\contentsline {subsubsection}{A first mini-query language}{118}{section*.72}
-\contentsline {subsubsection}{Iterating the design pattern}{118}{section*.73}
-\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{119}{section*.74}
-\contentsline {paragraph}{Examples}{119}{section*.75}
-\contentsline {subsubsection}{Logical semantics}{120}{section*.76}
-\contentsline {subsubsection}{Other collection monads, other logics}{120}{section*.77}
-\contentsline {paragraph}{Stateful collections}{120}{section*.78}
-\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{122}{subsection.10.3.1}
-\contentsline {section}{\numberline {10.4}Searching for programs}{122}{section.10.4}
-\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{122}{subsection.10.4.1}
-\contentsline {subsubsection}{Monad composition via distributive laws}{122}{section*.79}
-\contentsline {subsection}{\numberline {10.4.2}Examples}{122}{subsection.10.4.2}
+\contentsline {subsection}{\numberline {7.5.1}Option as container}{107}{subsection.7.5.1}
+\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{108}{subsection.7.5.2}
+\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{108}{subsection.7.5.3}
+\contentsline {subsubsection}{Intuitionistic discipline}{108}{section*.60}
+\contentsline {subsubsection}{Linear discipline}{108}{section*.61}
+\contentsline {section}{\numberline {7.6}Co-monad and take-out}{108}{section.7.6}
+\contentsline {section}{\numberline {7.7}Hopf structure}{108}{section.7.7}
+\contentsline {section}{\numberline {7.8}Container and control}{108}{section.7.8}
+\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{108}{subsection.7.8.1}
+\contentsline {chapter}{\numberline {8}Domain model, storage and state}{109}{chapter.8}
+\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{109}{section.8.1}
+\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{109}{subsection.8.1.1}
+\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{109}{subsection.8.1.2}
+\contentsline {subsection}{\numberline {8.1.3}ORM}{109}{subsection.8.1.3}
+\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{109}{section.8.2}
+\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{109}{subsection.8.2.1}
+\contentsline {subsubsection}{Open source implementations}{109}{section*.62}
+\contentsline {paragraph}{ScalaQuery}{109}{section*.63}
+\contentsline {paragraph}{Squeryl}{109}{section*.64}
+\contentsline {section}{\numberline {8.3}Continuations revisited}{110}{section.8.3}
+\contentsline {subsection}{\numberline {8.3.1}Stored state}{110}{subsection.8.3.1}
+\contentsline {subsection}{\numberline {8.3.2}Transactions}{110}{subsection.8.3.2}
+\contentsline {chapter}{\numberline {9}Putting it all together}{111}{chapter.9}
+\contentsline {section}{\numberline {9.1}Our web application end-to-end}{111}{section.9.1}
+\contentsline {section}{\numberline {9.2}Deploying our application}{111}{section.9.2}
+\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{111}{subsection.9.2.1}
+\contentsline {section}{\numberline {9.3}From one web application to web framework}{111}{section.9.3}
+\contentsline {chapter}{\numberline {10}The semantic web}{113}{chapter.10}
+\contentsline {section}{\numberline {10.1}Referential transparency}{113}{section.10.1}
+\contentsline {paragraph}{A little motivation}{114}{section*.65}
+\contentsline {section}{\numberline {10.2}Composing monads}{115}{section.10.2}
+\contentsline {subsubsection}{Preliminary}{116}{section*.66}
+\contentsline {section}{\numberline {10.3}Semantic application queries}{117}{section.10.3}
+\contentsline {subsubsection}{An alternative presentation}{117}{section*.67}
+\contentsline {paragraph}{Logic: the set monad as an algebra}{118}{section*.68}
+\contentsline {paragraph}{Primes: an application}{119}{section*.69}
+\contentsline {paragraph}{Summary}{119}{section*.70}
+\contentsline {subsubsection}{Patterns}{120}{section*.71}
+\contentsline {subsubsection}{A first mini-query language}{120}{section*.72}
+\contentsline {subsubsection}{Iterating the design pattern}{120}{section*.73}
+\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{121}{section*.74}
+\contentsline {paragraph}{Examples}{121}{section*.75}
+\contentsline {subsubsection}{Logical semantics}{122}{section*.76}
+\contentsline {subsubsection}{Other collection monads, other logics}{122}{section*.77}
+\contentsline {paragraph}{Stateful collections}{122}{section*.78}
+\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{124}{subsection.10.3.1}
+\contentsline {section}{\numberline {10.4}Searching for programs}{124}{section.10.4}
+\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{124}{subsection.10.4.1}
+\contentsline {subsubsection}{Monad composition via distributive laws}{124}{section*.79}
+\contentsline {subsection}{\numberline {10.4.2}Examples}{124}{subsection.10.4.2}

0 comments on commit 8498f32

Please sign in to comment.