this time in ML. The dialect of ML used is SML, not OCaml, but there are only
superficial syntactic differences between these languages.
+# Other resources #
+
+* [Barker's Lambda Tutorial](http://homepages.nyu.edu/~cb125/Lambda): tutorial with embedded Javascript code that enables a user to type a lambda form into a web browser page and click to execute (reduce) it.
+* [Penn Lambda Calculator](http://www.ling.upenn.edu/lambda/): requires installing Java, but provides a number of tools for evaluating lambda expressions and other linguistic forms.
##[[Schedule of Topics]]##
+ ##[[Lecture Notes]]##
+
+ ##[[Offsite Reading]]##
+
+ There's lots of links here already to tutorials and encyclopedia entries about many of the notions we'll be dealing with.
+
+
----
All wikis are supposed to have a [[SandBox]], so this one does too.
1. Beta reduction
2. Substitution; using alpha-conversion and other strategies
- 3. Conversion versus Reduction
+ 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)
+ 6. Lambda calculus compared to combinatorial logic
7. Encoding pairs (and triples and ...)
8. Encoding booleans
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)
+15. Recursion exploiting the fold-like representation of numbers and lists ([deforestation](http://en.wikipedia.org/wiki/Deforestation_%28computer_science%29), [zippers](http://en.wikipedia.org/wiki/Zipper_%28data_structure%29))
16. General recursion using omega
17. The Y combinator(s); more on evaluation strategies