+[[!toc levels=3]]
+
## Links to tutorials and other resources on Scheme, OCaml, and Haskell ##
* Help on [[Learning Scheme]]
* Help on [[Learning OCaml]]
* Help on [[Learning Haskell]]
+
<!-- -->
* This site's [[explanation of the differences|rosetta1]] between these languages
* [[Famous Computer Scientists|people]]
+## Old links ##
+
+*The links below are from the last time we taught the course; we should check them again...*
-<!--
There's lots of links here already to tutorials and encyclopedia entries about many of the notions we'll be dealing with.
Many of these links are to Wikipedia. You can learn a lot from such articles,
the group and hopefully get to a point where you can read it again and
get more out of. (Rinse and repeat.)
-## Functions ##
+### Functions ###
* [[!wikipedia Higher-order function]]
* [[!wikipedia First-class function]]
* [[!wikipedia Currying]]
-## Functional vs imperative programming ##
+### Functional vs imperative programming ###
* [[!wikipedia Declarative programming]]
* [[!wikipedia Functional programming]]
* [[!wikipedia Side effect (computer science) desc="Side effects"]]
* [[!wikipedia Imperative programming]]
-## General issues about variables and scope in programming languages ##
+### General issues about variables and scope in programming languages ###
* [[!wikipedia Variable (programming) desc="Variables"]]
* [[!wikipedia Free variables and bound variables]]
* [[!wikipedia Scope (programming) desc="Variable scope"]]
* [[!wikipedia Closure (computer science) desc="Closures"]]
-##[[Learning Scheme]]##
-## Untyped lambda calculus and combinatory logic ##
+### Untyped lambda calculus and combinatory logic ###
+* [[Dana Scott's Turing centenary address on the lambda calculus|http://turing100.acm.org/lambda_calculus_timeline.pdf]]
* [[!wikipedia Lambda calculus]]
-<!~- Haskell Curry had ideas that he felt were validated upon reading a 1924 paper by M. Schönfinkel "Uber die Bausteine der mathematischen Logik" which used combinators in a similar way to his own ideas. Haskell then wrote "An analysis of logical substitution" which appeared in the American Journal of Mathematics in 1929. ~->
+<!~- Haskell Curry had ideas that he felt were validated upon reading a 1924 paper by M. Schönfinkel "Uber die Bausteine der mathematischen Logik" which used combinators in a similar way to his own ideas. Curry then wrote "An analysis of logical substitution" which appeared in the American Journal of Mathematics in 1929. ~->
* [[!wikipedia Moses Schönfinkel]]
* [[!wikipedia Haskell Curry]]
* [[!wikipedia Alonzo Church]]<p>
* [Combinator Birds](http://www.angelfire.com/tx4/cus/combinator/birds.html)
* [Les deux combinateurs et la totalite](http://www.paulbraffort.net/j_et_i/j_et_i.html) by Paul Braffort.
-## Evaluation Order ##
+### Evaluation Order ###
* [[!wikipedia Evaluation strategy]]
* [[!wikipedia Eager evaluation]]
* [[!wikipedia Lazy evaluation]]
* [[!wikipedia Strict programming language]]
-## Confluence, Normalization, Undecidability ##
+### Confluence, Normalization, Undecidability ###
* [[!wikipedia Church-Rosser theorem]]
* [[!wikipedia Normalization property]]
* [Scooping the Loop Snooper](http://www.cl.cam.ac.uk/teaching/0910/CompTheory/scooping.pdf), a proof of the undecidability of the halting problem in the style of Dr Seuss by Geoffrey K. Pullum
-## Recursion and the Y Combinator ##
+### Recursion and the Y Combinator ###
* [[!wikipedia Recursion (computer science) desc="Recursion"]]
* [[!wikipedia Y combinator]]
* [The Y Combinator](http://dangermouse.brynmawr.edu/cs245/ycomb_jim.html) derives the applicative-order Y-combinator from scratch, in Scheme. This derivation is similar in flavor to the derivation found in The Little Schemer, but uses a slightly different starting approach...
* [The church of the least fixed point, by Sans Pareil](http://www.springerlink.com/content/n4t2v573m58g2755/)
-## Folds ##
+### Folds ###
* [[!wikipedia Fold (higher-order function)]]
-## Types ##
+### Types ###
* [[!wikipedia Typed lambda calculus]]
* [[!wikipedia Simply typed lambda calculus]]
* [[!wikipedia Bottom type]]
-##[[Learning OCaml]]##
-
-## Monads ##
+### Monads ###
* [[!wikipedia Monad (functional programming) desc="Monads in Functional Programming"]]
* [Daniel Friedman. A Schemer's View of Monads](/schemersviewofmonads.ps): from <https://www.cs.indiana.edu/cgi-pub/c311/doku.php?id=home> but the link above is to a local copy.
* [A Gentle Intro to Haskell: About Monads](http://www.haskell.org/tutorial/monads.html) (link currently broken, check <http://www.haskell.org/haskellwiki/Tutorials>)
* Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs" [not sure which paper]
-## Monads in Category Theory ##
+### Monads in Category Theory ###
* [Category Theory at SEP](http://plato.stanford.edu/entries/category-theory/)
* [[!wikipedia Category theory]]
* [A Partial Ordering of some Category Theory applied to Haskell](http://blog.sigfpe.com/2010/03/partial-ordering-of-some-category.html)
-## Side-effects / mutation ##
+### Side-effects / mutation ###
* [[!wikipedia Referential transparency (computer science)]]
* [[!wikipedia Side effect (computer science) desc="Side effects"]]
* [Pointers in OCaml](http://caml.inria.fr/resources/doc/guides/pointers.html)
-## Continuations ##
+### Continuations ###
* [[!wikipedia Continuation]]
* [[!wikipedia Continuation-passing style]]
* [Delimited continuations in natural language semantics](http://okmij.org/ftp/gengo/)
-## The Curry-Howard Correspondence ##
+### The Curry-Howard Correspondence ###
* The [[!wikipedia Curry-Howard isomorphism]]
* [The Curry-Howard correspondence in Haskell](http://www.thenewsh.com/~newsham/formal/curryhoward/)
* [Haskell wikibook on the Curry-Howard Isomorphism](http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism) at Haskell wiki<p>
-## Linear Logic ##
+### Linear Logic ###
* [[!wikipedia Linear logic]]
--->