Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added dicussion of my position on semantic web. Added presentation of…

… logic of monoids.
  • Loading branch information...
commit 4bf46663c6e26b33195219debd50d0e3dcc44a2a 1 parent a7ade2e
Meredith Gregory authored
View
8 src/main/book/content/bibliography/monadic.aux
@@ -1,16 +1,16 @@
\relax
\@setckpt{bibliography/monadic}{
-\setcounter{page}{75}
+\setcounter{page}{79}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
-\setcounter{footnote}{0}
+\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{10}
-\setcounter{section}{2}
+\setcounter{section}{4}
\setcounter{subsection}{2}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
@@ -19,7 +19,7 @@
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{Item}{0}
-\setcounter{Hfootnote}{9}
+\setcounter{Hfootnote}{11}
\setcounter{lstnumber}{9}
\setcounter{theorem}{0}
\setcounter{section@level}{2}
View
27 src/main/book/content/chapters/ten/ch.aux
@@ -2,24 +2,31 @@
\@writefile{toc}{\contentsline {chapter}{\numberline {10}The semantic web}{71}{chapter.10}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{72}{section*.40}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.1}How our web framework enables different kinds of application queries}{74}{section.10.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.2}Searching for programs}{74}{section.10.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.2.1}A new foundation for search}{74}{subsection.10.2.1}}
-\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{74}{section*.41}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.2.2}Examples}{74}{subsection.10.2.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.1}Referential transparency}{71}{section.10.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.2}Composing monads}{72}{section.10.2}}
+\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{73}{section*.40}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.3}How our web framework enables different kinds of application queries}{75}{section.10.3}}
+\@writefile{toc}{\contentsline {subsubsection}{An alternative presentation}{75}{section*.41}}
+\@writefile{toc}{\contentsline {paragraph}{Logic: the set monad as an algebra}{75}{section*.42}}
+\@writefile{toc}{\contentsline {paragraph}{Primes: an application}{76}{section*.43}}
+\@writefile{toc}{\contentsline {paragraph}{Summary}{77}{section*.44}}
+\@writefile{toc}{\contentsline {subsubsection}{Iterating the design pattern}{77}{section*.45}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.4}Searching for programs}{78}{section.10.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{78}{subsection.10.4.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{78}{section*.46}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.2}Examples}{78}{subsection.10.4.2}}
\@setckpt{chapters/ten/ch}{
-\setcounter{page}{75}
+\setcounter{page}{79}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
-\setcounter{footnote}{0}
+\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{10}
-\setcounter{section}{2}
+\setcounter{section}{4}
\setcounter{subsection}{2}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
@@ -28,7 +35,7 @@
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{Item}{0}
-\setcounter{Hfootnote}{9}
+\setcounter{Hfootnote}{11}
\setcounter{lstnumber}{9}
\setcounter{theorem}{0}
\setcounter{section@level}{2}
View
35 src/main/book/content/chapters/ten/ch.tex
@@ -6,6 +6,41 @@ \chapter{The semantic web}
{\small\em Where are we; how did we get here; and where are we going?}
\end{center}
+\section{Referential transparency}
+
+In the interest of complete transparency, it is important for me to be
+clear about my position on the current approach to the semantic
+web. As early as 2004 i appeared in print as stating that a complete
+lack of confidence regarding meta-data, tags and ontology-based
+approaches. Despite the attention and intense efforts around
+technologies like \texttt{OWL}, i am unaware of major success
+stories. The funny thing is, the same could be said of the same sorts
+of efforts put underway two decades before that, such as \texttt{KIF},
+and those two decades before that. In my humble opinion, the theory of
+computing is currently the best theory we have of knowledge
+representation, bar none.
+
+As such, i want to illustrate how the monadic techniques provide a new
+foundation for search on a semantic basis. In particular, what we will
+see in the following sections of the concluding chapter is how to use
+monads to search for programs in our toy language on the basis of
+their structure and their \emph{behavior}! Despite the fact that the
+open source movement has created such a demand for higher-level
+techniques for search code repositories, at present writing, i am
+unaware of any system, not \texttt{Hoogle}, not \texttt{Merobase}, not
+\texttt{Google Codebase}, nor any of the other of several dozen
+efforts in this direction, that offer this feature. Yet, the monadic
+design pattern not only makes it clear that such a feature is a
+possibility, it makes the organization of the code to do it perfectly
+tractable. i cannot imagine a more powerful argument for the efficacy
+of this technique for structuring functional programs.
+
+Before we approach this we need to introduce just a little bit more
+machinery, namely how to compose monads.
+
+
+\section{Composing monads}
+
In all of the preceding chapters we deferred one of the most important
questions: do monads themselves compose? After all, if monad is the
proposal to replace the notion of object, and the primary criticism of
View
177 src/main/book/content/chapters/ten/new-queries.tex
@@ -1,3 +1,178 @@
\section{How our web framework enables different kinds of application queries}
-TBD
+\subsubsection{An alternative presentation}
+
+If you recall, there's an alternative way to present monads that are
+algebras, like our monoid monad. Algebras are presented in terms of
+generators and relations. In our case the generators presentation is
+really just a grammar for monoid expressions.
+
+\begin{mathpar}
+ \inferrule* [lab=expression] {} {{m,n} ::=}
+ \and
+ \inferrule* [lab=identity element] {} {e}
+ \and
+ \inferrule* [lab=generators] {} {\;| \; g_1 \; | \; ... \; | \; g_n}
+ \and
+ \inferrule* [lab=monoid-multiplication] {} {\;| \; m * n}
+\end{mathpar}
+
+This is subject to the following constraints, meaning that we will
+treat syntactic expressions of certain forms as denoting the same
+element of the monoid. To emphasize the nearly purely syntactic role
+of these constraints we will use a different symbol for the
+constraints. We also use the same symbol, $\equiv$, for the smallest equivalence
+relation respecting these constraints.
+
+\begin{mathpar}
+ \inferrule* [lab=identity laws] {} {m * e \equiv m \equiv e * m}
+ \and
+ \inferrule* [lab=associativity] {} {m_1 * (m_2 * m_3) \equiv (m_1 * m_2) * m_3}
+\end{mathpar}
+
+\paragraph{Logic: the set monad as an algebra}
+In a similar manner, there is a language associated with the monad of
+sets \emph{considered as an algebra}. This language is very familiar
+to most programmers.
+
+\begin{mathpar}
+ \inferrule* [lab=expression] {} {{c,d} ::=}
+ \and
+ \inferrule* [lab=identity verity] {} {true}
+ \and
+ \inferrule* [lab=negation] {} {\;| \; \neg c}
+ \and
+ \inferrule* [lab=conjunction] {} {\;| \; c \& d}
+\end{mathpar}
+
+Now, if we had a specific set in hand, say $L$ (which we'll call a
+universe in the sequel), we can interpret the expressions in the this
+language, aka formulae, in terms of operations on subsets of that
+set. As with our compiler for the concrete syntax of the
+$lambda$-calculus in chapter 1, we can express this translation very
+compactly as
+
+\begin{mathpar}
+ \inferrule* {} {\meaningof{true} = L}
+ \and
+ \inferrule* {} {\meaningof{\neg c} = L \backslash c}
+ \and
+ \inferrule* {} {\meaningof{c \& d} = \meaningof{c} \cap \meaningof{d}}
+\end{mathpar}
+
+Now, what's happening when we pull the monoid monad through the set
+monad via a distributive map is this. First, the monoid monad
+furnishes the universe, $L$, as the set of expressions generated by
+the grammar. We'll denote this by $L(m)$. Then, we enrich the set of
+formulae by the operations of the monoid \emph{acting on sets}.
+
+\begin{mathpar}
+ \inferrule* [lab=expression] {} {{c,d} ::=}
+ \and
+ \inferrule* [lab=identity verity] {} {true}
+ \and
+ \inferrule* [lab=negation] {} {\;| \; \neg c}
+ \and
+ \inferrule* [lab=conjunction] {} {\;| \; c \& d}
+ \and
+ \inferrule* [lab=identity verity] {} {\bf{e}}
+ \and
+ \inferrule* [lab=negation] {} {\;| \; \bf{g_1} \; | \; ... \; | \; \bf{g_n}}
+ \and
+ \inferrule* [lab=conjunction] {} {\;| \; c * d}
+\end{mathpar}
+
+The identity element, $e$ and the generators of the monoid, $g_1$,
+..., $g_n$, can be considered $0$-ary operations in the same way that
+we usually consider constants as $0$-ary operations. To avoid
+confusion between these elements and the \emph{logical formulae} that
+pick them out of the crowd, we write the logical formulae in
+$\bf{boldface}$.
+
+Now, we can write our distributive map. Surprisingly, it is exactly a
+meaning for our logic!
+
+\begin{mathpar}
+ \inferrule* {} {\meaningof{true} = L(m)}
+ \and
+ \inferrule* {} {\meaningof{\neg c} = L(m) \backslash c}
+ \and
+ \inferrule* {} {\meaningof{c \& d} = \meaningof{c} \cap \meaningof{d}}
+ \and
+ \inferrule* {} {\meaningof{\bf{e}} = \{ m \; \in \; L(m) \; | \; m \equiv e \}}
+ \and
+ \inferrule* {} {\meaningof{\bf{g_i}} = \{ m \; \in \; L(m) \; | \; m \equiv g_i \}}
+ \and
+ \inferrule* {} {\meaningof{c*d} = \{ m \; \in \; L(m) \; | \; m \equiv m_1 * m_2, m_1 \; \in \; \meaningof{c}, m_2 \; \in \; \meaningof{d} \}}
+\end{mathpar}
+
+\paragraph{Primes: an application}
+Before going any further, let's look at an example of how to use these
+new operators. Suppose we wanted to pick out all the elements of the
+monoid that were not expressible as a composition of other
+elements. Obviously, for monoids with a finite set of generators, this
+is exactly just the generators, so we could write $\bf{g_1} || ... ||
+\bf{g_n}$\footnote{We get the disjunction, $||$, by the usual DeMorgan
+ translation: $c || d \stackrel{def}{=} \neg( \neg c \& \neg
+ d)$}. However, when the set of generators is not finite, as it is
+when the monoid is the integers under multiplication, we need another
+way to write this down. That's where our other operators come in
+handy. A moment's thought suggests that we could say that since $true$
+denotes any possible element in the monoid, an element is not a
+composition using negation plus our composition formula, i.e. $\neg
+(true * true)$. This is a little overkill, however. We just want to
+eliminate non-trivial compositions. We know how to express the
+identity element, that's $\bf{e}$, so we are interested in those
+elements that are not the identity, i.e. $\neg \bf{e}$. Then a formula
+that eliminates compositions of non-trivial elements is spelled out
+$\neg (\neg e * \neg e)$. Finally, we want to eliminate the identity
+as a solution. So, we arrive at $\neg (\neg e * \neg e) \& \neg
+e$. There, that formula picks out the \emph{primes} of \emph{any}
+monoid.
+
+\paragraph{Summary}
+
+What have we done? We've illustrated a specific distributive map, one
+that pulls the set monad through the monoid monad. We've shown that
+this particular distributive map coincides with giving a semantics to
+a particular logic, one whose structure is derived solely from the
+shape of the collection monad, i.e. set, and the shape of the term
+language, in this case monoid.
+
+\subsubsection{Iterating the design pattern}
+
+The whole point of working in this manner is that by virtue of its
+compositional structure it provides a much higher level of abstraction
+and greater opportunities for reuse. To illustrate the point, we will
+now iterate the construction using our toy language, the
+$lambda$-calculus, as the term language. As we saw in chapter 1, the
+$lambda$-calculus also has a generators and relations
+presentation. Unlike a monoid, however, the lambda calculus has
+another piece of machinery: reduction! In addition to structural
+equivalence of terms (which is a bi-directional relation) there is the
+$beta$-reduction rule that captures the \emph{behavioral} aspect of
+the lambda calculus.
+
+It is key to understand this underlying structure of language
+definitions. In essence, when a DSL is purely about structure it is
+presented entirely in terms of generators (read a grammar) and
+relations (like the monoid laws). When the DSL is also about behavior,
+i.e. the terms in the language somehow express some kind of
+computation, then the language has a third component, some kind of
+reduction relation. \footnote{In some sense this is one of the central
+ contributions of the theory of computation back to
+ mathematics. Algebraists have known for a long time about generators
+ and relations presentations of algebraic structures (of which
+ algebraic data types are a subset). This collective wisdom is
+ studied, for example, in the field of universal
+ algebra. Computational models like the $lambda$-calculus and more
+ recently the process calculi, like Milner's $\pi$-calculus or
+ Cardelli and Gordon's ambient calculus, take this presentation one
+ step further and add a set of conditional rewrite rules to express
+ the computational content of the model. It was Milner who first
+ recognized this particular decomposition of language definitions in
+ his seminal paper, Functions as Processes, where he reformulated the
+ presentation $\pi$-calculus along these lines.} This organization,
+this common factoring of the specification of a language, makes it
+possible to factor code that handles a wide range of semantic
+features. The logic we derive below provides a great example.
View
139 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 2008.11.17) 7 MAR 2010 04:22
+This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2008.11.17) 8 MAR 2010 19:58
entering extended mode
**monadic.tex
(./monadic.tex
@@ -356,20 +356,20 @@ Writing index file monadic.idx
(./chapters/nine/ch.aux) (./chapters/ten/ch.aux) (./bibliography/monadic.aux))
\openout1 = `monadic.aux'.
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
-LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 34.
-LaTeX Font Info: ... okay on input line 34.
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 33.
+LaTeX Font Info: ... okay on input line 33.
(/opt/local/share/texmf-dist/tex/context/base/supp-pdf.tex
(/opt/local/share/texmf-dist/tex/context/base/supp-mis.tex
@@ -405,26 +405,26 @@ loading : Context Support Macros / PDF (2004.03.26)
\MPnumerator=\count142
\everyMPtoPDFconversion=\toks45
)
-Package hyperref Info: Link coloring OFF on input line 34.
+Package hyperref Info: Link coloring OFF on input line 33.
(/opt/local/share/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2003/12/03 v2.21 Cross-referencing by name of section
\c@section@level=\count143
)
-LaTeX Info: Redefining \ref on input line 34.
-LaTeX Info: Redefining \pageref on input line 34.
+LaTeX Info: Redefining \ref on input line 33.
+LaTeX Info: Redefining \pageref on input line 33.
(./monadic.out)
(./monadic.out)
\openout3 = `monadic.out'.
\c@lstlisting=\count144
-LaTeX Font Info: Try loading font information for OMS+cmr on input line 37.
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 36.
(/opt/local/share/texmf-dist/tex/latex/base/omscmr.fd
File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: Font shape `OMS/cmr/m/it' in size <10.95> not available
-(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 37.
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 36.
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available
-(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 37.
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 36.
[1
@@ -433,7 +433,7 @@ LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available
{/opt/local/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Package hyperref Warning: No destination for bookmark of \addcontentsline,
-(hyperref) destination is added on input line 37.
+(hyperref) destination is added on input line 36.
(./monadic.toc
Underfull \vbox (badness 2689) has occurred while \output is active []
@@ -470,7 +470,7 @@ l.53 ... IO-monad for http streams}{47}{chapter.3}
s been already used, duplicate ignored
<to be read again>
\penalty
-l.74 \include{chapters/one/ch}
+l.73 \include{chapters/one/ch}
[1]
\openout2 = `chapters/one/ch.aux'.
@@ -537,7 +537,7 @@ LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available
) (./chapters/one/where-are-we-going.tex [9] [10] [11] [12])
(./chapters/one/how-are-we-going-to-get-there.tex
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/R
-LambdaSignupPageScreenShot.pdf, id=410, 1353.055pt x 881.2925pt>
+LambdaSignupPageScreenShot.pdf, id=420, 1353.055pt x 881.2925pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/RLambdaSignupPageScreenShot.pdf Graphic file (type pdf)
@@ -550,7 +550,7 @@ Overfull \hbox (46.785pt too wide) in paragraph at lines 26--27
[13] [14 </Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/
figures/RLambdaSignupPageScreenShot.pdf>]
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/R
-LambdaREPLPageScreenShot.pdf, id=428, 1353.055pt x 881.2925pt>
+LambdaREPLPageScreenShot.pdf, id=438, 1353.055pt x 881.2925pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/RLambdaREPLPageScreenShot.pdf Graphic file (type pdf)
@@ -562,7 +562,7 @@ Overfull \hbox (46.785pt too wide) in paragraph at lines 51--52
</Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/R
-LambdaSampleEvaluationResultPage.pdf, id=429, 1353.055pt x 881.2925pt>
+LambdaSampleEvaluationResultPage.pdf, id=439, 1353.055pt x 881.2925pt>
File: /Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figu
res/RLambdaSampleEvaluationResultPage.pdf Graphic file (type pdf)
@@ -1016,22 +1016,38 @@ Chapter 9.
]
Chapter 10.
-
-Overfull \hbox (34.15538pt too wide) in paragraph at lines 15--19
+[71]
+Overfull \hbox (34.15538pt too wide) in paragraph at lines 50--54
[]\OT1/cmr/m/n/12 Intriguingly, mon-ads do not au-to-mat-i-cally com-pose. That
is, if [][][][][][][][][][][][][][][][][]
[]
-[71]
-Underfull \vbox (badness 10000) has occurred while \output is active []
+
+Underfull \vbox (badness 2035) has occurred while \output is active []
[72]
-(./chapters/ten/semantic-web.tex) (./chapters/ten/new-queries.tex)
-(./chapters/ten/search-for-behavior.tex
Underfull \vbox (badness 10000) has occurred while \output is active []
- [73])
-[74])
+ [73]
+(./chapters/ten/semantic-web.tex) (./chapters/ten/new-queries.tex
+Underfull \vbox (badness 10000) has occurred while \output is active []
+
+ [74]
+Overfull \hbox (124.69936pt too wide) has occurred while \output is active
+[]\OT1/cmr/m/sl/12 10.3. HOW OUR WEB FRAMEWORK ENABLES DIFFERENT KINDS OF APPL
+ICATION QUERIES \OT1/cmr/m/n/12 75
+ []
+
+[75] [76]) (./chapters/ten/search-for-behavior.tex)
+Underfull \vbox (badness 10000) has occurred while \output is active []
+
+
+Overfull \hbox (124.69936pt too wide) has occurred while \output is active
+[]\OT1/cmr/m/sl/12 10.3. HOW OUR WEB FRAMEWORK ENABLES DIFFERENT KINDS OF APPL
+ICATION QUERIES \OT1/cmr/m/n/12 77
+ []
+
+[77] [78])
\openout2 = `bibliography/monadic.aux'.
@@ -1046,33 +1062,34 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted.
)
Here is how much of TeX's memory you used:
- 9571 strings out of 94500
- 120719 string characters out of 1174972
- 220763 words of memory out of 1000000
- 11322 multiletter control sequences out of 10000+50000
- 18278 words of font info for 70 fonts, out of 500000 for 2000
+ 9596 strings out of 94500
+ 120975 string characters out of 1174972
+ 220765 words of memory out of 1000000
+ 11329 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
31i,20n,43p,489b,1556s stack positions out of 1500i,500n,5000p,200000b,5000s
PDF statistics:
- 1712 PDF objects out of 300000
- 1122 named destinations out of 131072
- 456 words of extra memory for PDF output out of 65536
-</opt/local/share/texmf-dist/fonts/type1/bluesky/latex/line10.pfb></opt/local
-/share/texmf-dist/fonts/type1/bluesky/cm/cmsy7.pfb></opt/local/share/texmf-dist
-/fonts/type1/bluesky/cm/cmex10.pfb></opt/local/share/texmf-dist/fonts/type1/blu
-esky/cm/cmmi7.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmsy8.pfb
-></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmmib10.pfb></opt/local/sh
-are/texmf-dist/fonts/type1/bluesky/cm/cmmi8.pfb></opt/local/share/texmf-dist/fo
-nts/type1/bluesky/cm/cmmi10.pfb></opt/local/share/texmf-dist/fonts/type1/bluesk
-y/cm/cmcsc10.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmtt10.pfb
-></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmmi12.pfb></opt/local/sha
-re/texmf-dist/fonts/type1/bluesky/cm/cmti12.pfb></opt/local/share/texmf-dist/fo
-nts/type1/bluesky/cm/cmr7.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/
-cm/cmr8.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmtt12.pfb></op
-t/local/share/texmf-dist/fonts/type1/bluesky/cm/cmsl12.pfb></opt/local/share/te
-xmf-dist/fonts/type1/bluesky/cm/cmbx12.pfb></opt/local/share/texmf-dist/fonts/t
-ype1/bluesky/cm/cmti10.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 (83 pages, 818968 bytes).
+ 1751 PDF objects out of 300000
+ 1135 named destinations out of 131072
+ 472 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/latex/line10.pfb></opt/local/share/texmf-dist
+/fonts/type1/bluesky/cm/cmsy7.pfb></opt/local/share/texmf-dist/fonts/type1/blue
+sky/cm/cmex10.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmmi7.pfb
+></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmsy8.pfb></opt/local/shar
+e/texmf-dist/fonts/type1/bluesky/cm/cmmib10.pfb></opt/local/share/texmf-dist/fo
+nts/type1/bluesky/cm/cmmi8.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky
+/cm/cmmi10.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmcsc10.pfb>
+</opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmtt10.pfb></opt/local/shar
+e/texmf-dist/fonts/type1/bluesky/cm/cmmi12.pfb></opt/local/share/texmf-dist/fon
+ts/type1/bluesky/cm/cmti12.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky
+/cm/cmr7.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/cmr8.pfb></opt
+/local/share/texmf-dist/fonts/type1/bluesky/cm/cmtt12.pfb></opt/local/share/tex
+mf-dist/fonts/type1/bluesky/cm/cmsl12.pfb></opt/local/share/texmf-dist/fonts/ty
+pe1/bluesky/cm/cmbx12.pfb></opt/local/share/texmf-dist/fonts/type1/bluesky/cm/c
+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 (87 pages, 842859 bytes).
View
10 src/main/book/content/monadic.out
@@ -47,7 +47,9 @@
\BOOKMARK [2][-]{subsection.9.2.1}{Why we are not deploying on GAE}{section.9.2}
\BOOKMARK [1][-]{section.9.3}{From one web application to web framework}{chapter.9}
\BOOKMARK [0][-]{chapter.10}{The semantic web}{}
-\BOOKMARK [1][-]{section.10.1}{How our web framework enables different kinds of application queries}{chapter.10}
-\BOOKMARK [1][-]{section.10.2}{Searching for programs}{chapter.10}
-\BOOKMARK [2][-]{subsection.10.2.1}{A new foundation for search}{section.10.2}
-\BOOKMARK [2][-]{subsection.10.2.2}{Examples}{section.10.2}
+\BOOKMARK [1][-]{section.10.1}{Referential transparency}{chapter.10}
+\BOOKMARK [1][-]{section.10.2}{Composing monads}{chapter.10}
+\BOOKMARK [1][-]{section.10.3}{How our web framework enables different kinds of application queries}{chapter.10}
+\BOOKMARK [1][-]{section.10.4}{Searching for programs}{chapter.10}
+\BOOKMARK [2][-]{subsection.10.4.1}{A new foundation for search}{section.10.4}
+\BOOKMARK [2][-]{subsection.10.4.2}{Examples}{section.10.4}
View
BIN  src/main/book/content/monadic.pdf
Binary file not shown
View
1  src/main/book/content/monadic.tex
@@ -9,7 +9,6 @@
\usepackage{mathpartir} % For grammars, rules, etc
\usepackage{bcprules} % For other kinds of rules
\usepackage{diagrams} % For commutative diagrams
-
\lstloadlanguages{Scala,Java,Haskell,XML,bash,HTML,SQL}
\parindent 1cm
View
19 src/main/book/content/monadic.toc
@@ -81,9 +81,16 @@
\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{69}{subsection.9.2.1}
\contentsline {section}{\numberline {9.3}From one web application to web framework}{69}{section.9.3}
\contentsline {chapter}{\numberline {10}The semantic web}{71}{chapter.10}
-\contentsline {subsubsection}{Preliminary}{72}{section*.40}
-\contentsline {section}{\numberline {10.1}How our web framework enables different kinds of application queries}{74}{section.10.1}
-\contentsline {section}{\numberline {10.2}Searching for programs}{74}{section.10.2}
-\contentsline {subsection}{\numberline {10.2.1}A new foundation for search}{74}{subsection.10.2.1}
-\contentsline {subsubsection}{Monad composition via distributive laws}{74}{section*.41}
-\contentsline {subsection}{\numberline {10.2.2}Examples}{74}{subsection.10.2.2}
+\contentsline {section}{\numberline {10.1}Referential transparency}{71}{section.10.1}
+\contentsline {section}{\numberline {10.2}Composing monads}{72}{section.10.2}
+\contentsline {subsubsection}{Preliminary}{73}{section*.40}
+\contentsline {section}{\numberline {10.3}How our web framework enables different kinds of application queries}{75}{section.10.3}
+\contentsline {subsubsection}{An alternative presentation}{75}{section*.41}
+\contentsline {paragraph}{Logic: the set monad as an algebra}{75}{section*.42}
+\contentsline {paragraph}{Primes: an application}{76}{section*.43}
+\contentsline {paragraph}{Summary}{77}{section*.44}
+\contentsline {subsubsection}{Iterating the design pattern}{77}{section*.45}
+\contentsline {section}{\numberline {10.4}Searching for programs}{78}{section.10.4}
+\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{78}{subsection.10.4.1}
+\contentsline {subsubsection}{Monad composition via distributive laws}{78}{section*.46}
+\contentsline {subsection}{\numberline {10.4.2}Examples}{78}{subsection.10.4.2}
Please sign in to comment.
Something went wrong with that request. Please try again.