Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 61 lines (60 sloc) 5.322 kB
fc177e5 Preparation for book
Meredith Gregory authored
1 \contentsline {chapter}{Contents}{i}{section*.1}
2 \contentsline {chapter}{Preface}{1}{chapter*.5}
3 \contentsline {chapter}{\numberline {1}Motivation and Background}{3}{chapter.1}
5b733bf Added discussion identifying reader. Added discussion of Haskell's
Meredith Gregory authored
4 \contentsline {paragraph}{With apologies to Italo Calvino}{3}{section*.6}
5 \contentsline {section}{\numberline {1.1}Where are we}{4}{section.1.1}
6 \contentsline {subsection}{\numberline {1.1.1}The concurrency squeeze: from the hardware up, from the web down}{4}{subsection.1.1.1}
7 \contentsline {subsection}{\numberline {1.1.2}Ubiquity of robust, high-performance virtual machines}{5}{subsection.1.1.2}
8 \contentsline {subsection}{\numberline {1.1.3}Advances in functional programming, monads and the awkward squad}{6}{subsection.1.1.3}
9 \contentsline {section}{\numberline {1.2}Where are we going}{10}{section.1.2}
10 \contentsline {subsection}{\numberline {1.2.1}A functional web}{10}{subsection.1.2.1}
11 \contentsline {subsection}{\numberline {1.2.2}DSL-based design}{10}{subsection.1.2.2}
12 \contentsline {section}{\numberline {1.3}How are we going to get there}{11}{section.1.3}
13 \contentsline {subsection}{\numberline {1.3.1}Leading by example}{11}{subsection.1.3.1}
14 \contentsline {subsubsection}{Our toy language}{11}{section*.7}
15 \contentsline {chapter}{\numberline {2}Toolbox}{13}{chapter.2}
16 \contentsline {section}{\numberline {2.1}Introduction to notation and terminology}{13}{section.2.1}
17 \contentsline {section}{\numberline {2.2}Introduction to core design patterns}{13}{section.2.2}
18 \contentsline {section}{\numberline {2.3}Variations in presentation}{13}{section.2.3}
19 \contentsline {subsection}{\numberline {2.3.1}A little history}{13}{subsection.2.3.1}
20 \contentsline {subsection}{\numberline {2.3.2}A little more history}{14}{subsection.2.3.2}
21 \contentsline {subsubsection}{Intuition: Monad as container}{15}{section*.8}
22 \contentsline {paragraph}{Shape of the container}{15}{section*.9}
23 \contentsline {paragraph}{Putting things into the container}{15}{section*.10}
24 \contentsline {paragraph}{Flattening nested containers}{15}{section*.11}
25 \contentsline {subsubsection}{Preserving connection to existing structure: Monad as generalization of monoid}{15}{section*.12}
26 \contentsline {subsubsection}{Decomposition of monad requirements}{16}{section*.13}
27 \contentsline {subsubsection}{A categorical way to look at monads}{16}{section*.14}
28 \contentsline {chapter}{\numberline {3}An IO-monad for http streams}{19}{chapter.3}
29 \contentsline {section}{\numberline {3.1}Code first, questions later}{19}{section.3.1}
30 \contentsline {subsection}{\numberline {3.1.1}An HTTP-request processor}{19}{subsection.3.1.1}
31 \contentsline {subsection}{\numberline {3.1.2}What we did}{19}{subsection.3.1.2}
32 \contentsline {section}{\numberline {3.2}Synchrony, asynchrony and buffering}{19}{section.3.2}
33 \contentsline {section}{\numberline {3.3}State, statelessness and continuations}{19}{section.3.3}
34 \contentsline {chapter}{\numberline {4}Parsing requests, monadically}{21}{chapter.4}
35 \contentsline {section}{\numberline {4.1}Obligatory parsing monad}{21}{section.4.1}
36 \contentsline {section}{\numberline {4.2}Your parser combinators are showing}{21}{section.4.2}
37 \contentsline {section}{\numberline {4.3}EBNF and why higher levels of abstraction are better}{21}{section.4.3}
38 \contentsline {chapter}{\numberline {5}The domain model as abstract syntax}{23}{chapter.5}
39 \contentsline {section}{\numberline {5.1}Our abstract syntax}{23}{section.5.1}
40 \contentsline {section}{\numberline {5.2}Our application domain model}{23}{section.5.2}
41 \contentsline {section}{\numberline {5.3}A transform pipeline}{23}{section.5.3}
42 \contentsline {chapter}{\numberline {6}Zippers and contexts and URI's, oh my!}{25}{chapter.6}
43 \contentsline {section}{\numberline {6.1}Zippers are not just for Bruno anymore}{25}{section.6.1}
44 \contentsline {section}{\numberline {6.2}Constructing contexts and zippers from data types}{25}{section.6.2}
45 \contentsline {section}{\numberline {6.3}Mapping URIs to zipper-based paths and back}{25}{section.6.3}
46 \contentsline {chapter}{\numberline {7}A review of collections as monads}{27}{chapter.7}
47 \contentsline {section}{\numberline {7.1}Monad as container}{27}{section.7.1}
48 \contentsline {section}{\numberline {7.2}Monads and take-out}{27}{section.7.2}
49 \contentsline {chapter}{\numberline {8}Domain model, storage and state}{29}{chapter.8}
50 \contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{29}{section.8.1}
51 \contentsline {section}{\numberline {8.2}Storage and language-integrated query}{29}{section.8.2}
52 \contentsline {section}{\numberline {8.3}Continuations revisited}{29}{section.8.3}
53 \contentsline {chapter}{\numberline {9}Putting it all together}{31}{chapter.9}
54 \contentsline {section}{\numberline {9.1}Our web application end-to-end}{31}{section.9.1}
55 \contentsline {section}{\numberline {9.2}Deploying our application}{31}{section.9.2}
56 \contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{31}{subsection.9.2.1}
57 \contentsline {section}{\numberline {9.3}From one web application to web framework}{31}{section.9.3}
58 \contentsline {chapter}{\numberline {10}The semantic web}{33}{chapter.10}
59 \contentsline {section}{\numberline {10.1}How our web framework enables different kinds of application queries}{33}{section.10.1}
60 \contentsline {section}{\numberline {10.2}Searching for programs}{33}{section.10.2}
Something went wrong with that request. Please try again.