Skip to content
Newer
Older
100644 79 lines (78 sloc) 6.58 KB
fc177e5 Preparation for book
Meredith Gregory authored Nov 27, 2009
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 Feb 19, 2010
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}
b69c1df Added discussion of book plan and justification for focus on monadic …
Meredith Gregory authored Feb 23, 2010
11 \contentsline {subsection}{\numberline {1.2.2}DSL-based design}{12}{subsection.1.2.2}
12 \contentsline {section}{\numberline {1.3}How are we going to get there}{13}{section.1.3}
13 \contentsline {subsection}{\numberline {1.3.1}Leading by example}{13}{subsection.1.3.1}
cd9140b Added placeholder figures and began outline of last chapter
Meredith Gregory authored Feb 28, 2010
14 \contentsline {subsubsection}{Our toy language}{17}{section*.7}
15 \contentsline {paragraph}{Abstract syntax}{17}{section*.8}
16 \contentsline {paragraph}{A simple-minded representation}{17}{section*.9}
17 \contentsline {paragraph}{Type parametrization and quotation}{18}{section*.10}
18 \contentsline {paragraph}{Some syntactic sugar}{19}{section*.11}
19 \contentsline {paragraph}{Digression: complexity management principle}{19}{section*.12}
20 \contentsline {paragraph}{Concrete syntax}{20}{section*.13}
21 \contentsline {paragraph}{Translating concrete syntax to abstract syntax}{20}{section*.14}
22 \contentsline {paragraph}{Structural equivalence and Relations or What makes abstract syntax abstract}{20}{section*.15}
23 \contentsline {paragraph}{Digression: the internal structure of the type of variables}{25}{section*.16}
24 \contentsline {paragraph}{Evaluation -- aka operational semantics}{25}{section*.17}
25 \contentsline {subsubsection}{What goes into a language definition}{27}{section*.18}
26 \contentsline {paragraph}{Syntax}{28}{section*.19}
27 \contentsline {paragraph}{Structural equivalence}{28}{section*.20}
28 \contentsline {paragraph}{Operational semantics}{28}{section*.21}
29 \contentsline {paragraph}{Discussion}{28}{section*.22}
30 \contentsline {chapter}{\numberline {2}Toolbox}{29}{chapter.2}
31 \contentsline {section}{\numberline {2.1}Introduction to notation and terminology}{29}{section.2.1}
32 \contentsline {section}{\numberline {2.2}Introduction to core design patterns}{29}{section.2.2}
33 \contentsline {section}{\numberline {2.3}Variations in presentation}{29}{section.2.3}
34 \contentsline {subsection}{\numberline {2.3.1}A little history}{29}{subsection.2.3.1}
35 \contentsline {subsection}{\numberline {2.3.2}A little more history}{32}{subsection.2.3.2}
36 \contentsline {subsubsection}{Intuition: Monad as container}{33}{section*.23}
37 \contentsline {paragraph}{Shape of the container}{33}{section*.24}
38 \contentsline {paragraph}{Putting things into the container}{33}{section*.25}
39 \contentsline {paragraph}{Flattening nested containers}{33}{section*.26}
40 \contentsline {subsubsection}{Preserving connection to existing structure: Monad as generalization of monoid}{33}{section*.27}
41 \contentsline {subsubsection}{Decomposition of monad requirements}{35}{section*.28}
42 \contentsline {subsubsection}{A categorical way to look at monads}{35}{section*.29}
43 \contentsline {chapter}{\numberline {3}An IO-monad for http streams}{37}{chapter.3}
44 \contentsline {section}{\numberline {3.1}Code first, questions later}{37}{section.3.1}
45 \contentsline {subsection}{\numberline {3.1.1}An HTTP-request processor}{44}{subsection.3.1.1}
46 \contentsline {subsection}{\numberline {3.1.2}What we did}{44}{subsection.3.1.2}
47 \contentsline {section}{\numberline {3.2}Synchrony, asynchrony and buffering}{44}{section.3.2}
48 \contentsline {section}{\numberline {3.3}State, statelessness and continuations}{44}{section.3.3}
49 \contentsline {chapter}{\numberline {4}Parsing requests, monadically}{45}{chapter.4}
50 \contentsline {section}{\numberline {4.1}Obligatory parsing monad}{45}{section.4.1}
51 \contentsline {section}{\numberline {4.2}Your parser combinators are showing}{45}{section.4.2}
52 \contentsline {section}{\numberline {4.3}EBNF and why higher levels of abstraction are better}{45}{section.4.3}
53 \contentsline {chapter}{\numberline {5}The domain model as abstract syntax}{47}{chapter.5}
54 \contentsline {section}{\numberline {5.1}Our abstract syntax}{47}{section.5.1}
55 \contentsline {section}{\numberline {5.2}Our application domain model}{47}{section.5.2}
56 \contentsline {section}{\numberline {5.3}A transform pipeline}{47}{section.5.3}
57 \contentsline {chapter}{\numberline {6}Zippers and contexts and URI's, oh my!}{49}{chapter.6}
58 \contentsline {section}{\numberline {6.1}Zippers are not just for Bruno anymore}{49}{section.6.1}
59 \contentsline {section}{\numberline {6.2}Constructing contexts and zippers from data types}{49}{section.6.2}
60 \contentsline {section}{\numberline {6.3}Mapping URIs to zipper-based paths and back}{49}{section.6.3}
61 \contentsline {chapter}{\numberline {7}A review of collections as monads}{51}{chapter.7}
62 \contentsline {section}{\numberline {7.1}Monad as container}{51}{section.7.1}
63 \contentsline {section}{\numberline {7.2}Monads and take-out}{51}{section.7.2}
64 \contentsline {chapter}{\numberline {8}Domain model, storage and state}{53}{chapter.8}
65 \contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{53}{section.8.1}
66 \contentsline {section}{\numberline {8.2}Storage and language-integrated query}{53}{section.8.2}
67 \contentsline {section}{\numberline {8.3}Continuations revisited}{53}{section.8.3}
68 \contentsline {chapter}{\numberline {9}Putting it all together}{55}{chapter.9}
69 \contentsline {section}{\numberline {9.1}Our web application end-to-end}{55}{section.9.1}
70 \contentsline {section}{\numberline {9.2}Deploying our application}{55}{section.9.2}
71 \contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{55}{subsection.9.2.1}
72 \contentsline {section}{\numberline {9.3}From one web application to web framework}{55}{section.9.3}
73 \contentsline {chapter}{\numberline {10}The semantic web}{57}{chapter.10}
74 \contentsline {section}{\numberline {10.1}How our web framework enables different kinds of application queries}{57}{section.10.1}
75 \contentsline {section}{\numberline {10.2}Searching for programs}{57}{section.10.2}
76 \contentsline {subsection}{\numberline {10.2.1}A new foundation for search}{57}{subsection.10.2.1}
77 \contentsline {subsubsection}{Monad composition via distributive laws}{57}{section*.30}
78 \contentsline {subsection}{\numberline {10.2.2}Examples}{57}{subsection.10.2.2}
Something went wrong with that request. Please try again.