add Unreliable Guide OCaml Modules
[lambda.git] / readings.mdwn
index c15315d..74a726d 100644 (file)
@@ -1,3 +1,5 @@
+[[!toc levels=3]]
+
 ## Links to tutorials and other resources on Scheme, OCaml, and Haskell ##
 
 *   Help on [[Learning Scheme]]
 ## Links to tutorials and other resources on Scheme, OCaml, and Haskell ##
 
 *   Help on [[Learning Scheme]]
@@ -5,12 +7,19 @@
 *   Help on [[Learning Haskell]]
 
 
 *   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,
 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,
@@ -29,13 +38,13 @@ of an article you don't fully understand, so that you can discuss it with the re
 the group and hopefully get to a point where you can read it again and
 get more out of. (Rinse and repeat.)
 
 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]]
 
 
 *      [[!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 Declarative programming]]
 *      [[!wikipedia Functional programming]]
@@ -44,7 +53,7 @@ get more out of. (Rinse and repeat.)
 *      [[!wikipedia Side effect (computer science) desc="Side effects"]]
 *      [[!wikipedia Imperative 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 Variable (programming) desc="Variables"]]
 *      [[!wikipedia Free variables and bound variables]]
@@ -55,12 +64,12 @@ get more out of. (Rinse and repeat.)
 *      [[!wikipedia Scope (programming) desc="Variable scope"]]
 *      [[!wikipedia Closure (computer science) desc="Closures"]]
 
 *      [[!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]]
 *      [[!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>
 *      [[!wikipedia Moses Schönfinkel]]
 *      [[!wikipedia Haskell Curry]]
 *      [[!wikipedia Alonzo Church]]<p>
@@ -78,14 +87,14 @@ get more out of. (Rinse and repeat.)
 *      [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.
 
 *      [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]]
 
 
 *      [[!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]]
 
 *      [[!wikipedia Church-Rosser theorem]]
 *      [[!wikipedia Normalization property]]
@@ -93,7 +102,7 @@ get more out of. (Rinse and repeat.)
 *      [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
 
 
 *      [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]]
 
 *      [[!wikipedia Recursion (computer science) desc="Recursion"]]
 *      [[!wikipedia Y combinator]]
@@ -106,12 +115,12 @@ get more out of. (Rinse and repeat.)
 *      [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/)
 
 *      [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)]]
 
 
 
 *    [[!wikipedia Fold (higher-order function)]]
 
 
-## Types ##
+### Types ###
 
 *      [[!wikipedia Typed lambda calculus]]
 *      [[!wikipedia Simply typed lambda calculus]]
 
 *      [[!wikipedia Typed lambda calculus]]
 *      [[!wikipedia Simply typed lambda calculus]]
@@ -128,10 +137,8 @@ get more out of. (Rinse and repeat.)
 *      [[!wikipedia Bottom type]]
 
 
 *      [[!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>)
 *      [[!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>)
@@ -192,7 +199,7 @@ in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Spr
 *      Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs" [not sure which paper]
 
 
 *      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]]
 
 *      [Category Theory at SEP](http://plato.stanford.edu/entries/category-theory/)
 *      [[!wikipedia Category theory]]
@@ -208,7 +215,7 @@ in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Spr
 *      [A Partial Ordering of some Category Theory applied to Haskell](http://blog.sigfpe.com/2010/03/partial-ordering-of-some-category.html)
 
 
 *      [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"]]
 
 *      [[!wikipedia Referential transparency (computer science)]]
 *      [[!wikipedia Side effect (computer science) desc="Side effects"]]
@@ -218,11 +225,12 @@ in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Spr
 *      [Pointers in OCaml](http://caml.inria.fr/resources/doc/guides/pointers.html)
 
 
 *      [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]]
 
 *      [[!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)
 *      [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)
@@ -233,7 +241,12 @@ in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Spr
 *      [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>
 *      [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]]
 *      [[!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)
 *      [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)
@@ -250,16 +263,18 @@ in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Spr
 *      [Delimited continuations in natural language semantics](http://okmij.org/ftp/gengo/)
 
 
 *      [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>
 
 
 
 *      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]]
 
 
 *      [[!wikipedia Linear logic]]
 
+### Other ###
+
+*   [Unreliable Guide to OCaml Modules](http://lambdafoo.com/blog/2015/05/15/unreliable-guide-to-ocaml-modules/)
 
 
--->