Merge branch 'pryor'
[lambda.git] / schedule_of_topics.mdwn
index 883c648..b784a9f 100644 (file)
@@ -13,26 +13,24 @@ This is very sketchy at this point, but it should give a sense of our intended s
 ## The "pure" or untyped lambda calculus ##
 
 1.     Beta reduction
-2.     Substitution; using alpha-conversion and other strategies
-3.     Conversion versus Reduction
-4.     Eta reduction and "extensionality"
-5.     Different evaluation strategies (call by name, call by value, etc.)
-6.     Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
-
-7.     Encoding pairs (and triples and ...)
-8.     Encoding booleans
-9.     Church-like encodings of numbers, defining addition and multiplication
-10.    Defining the predecessor function; alternate encodings for the numbers
-11.    Homogeneous sequences or "lists"; how they differ from pairs, triples, etc.
-12.    Representing lists as pairs
-13.    Representing lists as folds
-14.    Typical higher-order functions: map, filter, fold
-
-15.    Recursion exploiting the fold-like representation of numbers and lists (deforestation, zippers)
-16.    General recursion using omega
-17.    The Y combinator(s); more on evaluation strategies
-
-18.    Introducing the notion of a "continuation", which technique we'll now already have used a few times
+1.     Substitution; using alpha-conversion and other strategies
+1.     Conversion versus reduction
+1.     Eta reduction and "extensionality"
+1.     Different evaluation strategies (call by name, call by value, etc.)
+1.     Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
+1.     Lambda calculus compared to combinatorial logic<p>
+1.     Encoding pairs (and triples and ...)
+1.     Encoding booleans
+1.     Church-like encodings of numbers, defining addition and multiplication
+1.     Defining the predecessor function; alternate encodings for the numbers
+1.     Homogeneous sequences or "lists"; how they differ from pairs, triples, etc.
+1.     Representing lists as pairs
+1.     Representing lists as folds
+1.     Typical higher-order functions: map, filter, fold<p>
+1.     Recursion exploiting the fold-like representation of numbers and lists ([[!wikipedia Deforestation (computer science)]], [[!wikipedia Zipper (data structure)]])
+1.     General recursion using omega
+1.     The Y combinator(s); more on evaluation strategies<p>
+1.     Introducing the notion of a "continuation", which technique we'll now already have used a few times
 
 ## Types ##
 
@@ -71,7 +69,7 @@ This is very sketchy at this point, but it should give a sense of our intended s
 ## Side-effects and mutation ##
 
 1.     What difference imperativity makes
-2.     Monads we've already seen, and the "monadic laws" (computer science version)
+2.     Monads we've already seen, and the "monadic laws" [computer science version: Wadler](http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf)
 3.     Side-effects in a purely functional setting, via monads
 4.     The basis of monads in category theory
 5.     Other interesting monads: reader monad, continuation monad