+[[!toc levels=3]]
+
## Links to tutorials and other resources on Scheme, OCaml, and Haskell ##
* Help on [[Learning Scheme]]
* Help on [[Learning Haskell]]
-<!--
-* [[Translating between OCaml Scheme and Haskell]]
+<!-- -->
+* This site's [[explanation of the differences|rosetta1]] between these languages
+
+
+## Other Offsite Reading ##
+
+* [[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]]
* [[!wikipedia Call-with-current-continuation]]
+* John C Reynolds, [The discoveries of continuations](http://cs.au.dk/~hosc/local/LaSC-6-34-pp233-248.pdf)
* [Intro to call/cc](http://community.schemewiki.org/?call-with-current-continuation) at SchemeWiki
* [Call With Current Continuation](http://www.c2.com/cgi/wiki?CallWithCurrentContinuation)
* [Continuations Made Simple and Illustrated](http://www.ps.uni-saarland.de/~duchier/python/continuations.html)
* [Continuations for Curmudgeons](http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons) [Commentary](http://lambda-the-ultimate.org/node/643)
* [Haskell wiki on Continuations](http://www.haskell.org/haskellwiki/Continuation)
* [Haskell wikibook on Continuation Passing Style](http://en.wikibooks.org/wiki/Haskell/Continuation_passing_style)<p>
+
+<!-- -->
+
* [[!wikipedia Delimited continuation]]
+* Ken's paper [Shift to Control](http://repository.readscheme.org/ftp/papers/sw2004/shan.pdf), comparing some of the different delimited continuation operators
+* Racket's documents on [the variety of continuation operators](http://docs.racket-lang.org/reference/cont.html?q=abort#%28mod-path._racket%2Fcontrol%29)
* [Composable Continuations Tutorial](http://community.schemewiki.org/?composable-continuations-tutorial) at SchemeWiki
* [Post by Ken](http://lambda-the-ultimate.org/node/1197#comment-12927) on Lambda the Ultimate explaining difference between undelimited and delimited continuations
* [shift, reset and streams](http://chneukirchen.org/blog/archive/2005/04/shift-reset-and-streams.html)
* [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]]
--->