coroutines tweak
[lambda.git] / offsite_reading.mdwn
index d9c7f82..0187580 100644 (file)
@@ -26,6 +26,7 @@ get more out of. (Rinse and repeat.)
 *      [[!wikipedia Functional programming]]
 *      [[!wikipedia Purely functional]]
 *      [[!wikipedia Referential transparency (computer science)]]
+*      [[!wikipedia Side effect (computer science) desc="Side effects"]]
 *      [[!wikipedia Imperative programming]]
 
 ## General issues about variables and scope in programming languages ##
@@ -41,23 +42,15 @@ get more out of. (Rinse and repeat.)
 
 ##[[Learning Scheme]]##
 
-*      [Try Scheme in your web browser](http://tryscheme.sourceforge.net/)
-
 ## Untyped lambda calculus and combinatory logic ##
 
 *      [[!wikipedia Lambda calculus]]
-*      Our [[Lambda evaluator]]
-*      [Chris Barker's Lambda Tutorial](http://homepages.nyu.edu/~cb125/Lambda)
-*      [Lambda Animator](http://thyer.name/lambda-animator/)
-*      [Penn lambda calculator](http://www.ling.upenn.edu/lambda/) Pedagogical software developed by Lucas Champollion, Josh Tauberer and Maribel Romero.<p>
-
 <!-- 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. -->
 *      [[!wikipedia Moses Schönfinkel]]
 *      [[!wikipedia Haskell Curry]]
 *      [[!wikipedia Alonzo Church]]<p>
 *      [[!wikipedia Church encoding]]
 
-
 *      [[!wikipedia Combinatory logic]]
 *      [Combinatory logic](http://plato.stanford.edu/entries/logic-combinatory/) at the Stanford Encyclopedia of Philosophy
 *      [[!wikipedia SKI combinatory calculus]]
@@ -66,6 +59,10 @@ get more out of. (Rinse and repeat.)
        <http://people.cs.uu.nl/jeroen/article/combinat/combinat.ps>
 *      [Chris Barker's Iota and Jot](http://semarch.linguistics.fas.nyu.edu/barker/Iota/)<p>
 
+*      [To Dissect a Mockingbird](http://dkeenan.com/Lambda/index.htm)
+*      [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 ##
 
 *      [[!wikipedia Evaluation strategy]]
@@ -92,42 +89,53 @@ get more out of. (Rinse and repeat.)
 *      [Y Combinator for Dysfunctional Non-Schemers](http://rayfd.wordpress.com/2007/05/06/y-combinator-for-dysfunctional-non-schemers/)
 *      [The Y Combinator](http://www.ece.uc.edu/~franco/C511/html/Scheme/ycomb.html)
 *      [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 ##
+
+*    [[!wikipedia Fold (higher-order function)]]
 
 
 ## Types ##
 
-*      [[!wikipedia Tagged union]]
-*      [[!wikipedia Algebraic data type]]
-*      [[!wikipedia Recursive data type]]
-*      [[!wikipedia Pattern matching]]
-*      [[!wikipedia Unit type]]
-*      [[!wikipedia Bottom type]]
 *      [[!wikipedia Typed lambda calculus]]
 *      [[!wikipedia Simply typed lambda calculus]]
 *      [Type Theory](http://plato.stanford.edu/entries/type-theory/) at the Stanford Encyclopedia of Philosophy
 *      [Church's Type Theory](http://plato.stanford.edu/entries/type-theory-church/) at the Stanford Encyclopedia of Philosophy
-*      The [[!wikipedia Curry-Howard isomorphism]]
-*      [The Curry-Howard correspondence in Haskell](http://www.thenewsh.com/~newsham/formal/curryhoward/)
-*      [The Curry-Howard Isomorphism](http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism) at Haskell wiki<p>
 *      [[!wikipedia Type polymorphism]]
 *      [[!wikipedia System F]]
-
-##[[Learning OCaml]]##
+<p>
+*      [[!wikipedia Tagged union]]
+*      [[!wikipedia Algebraic data type]]
+*      [[!wikipedia Recursive data type]]
+*      [[!wikipedia Pattern matching]]
+*      [[!wikipedia Unit type]]
+*      [[!wikipedia Bottom type]]
 
 
-## Side-effects / mutation ##
+##[[Learning OCaml]]##
 
-*      [[!wikipedia Side effect (computer science) desc="Side effects"]]
-*      [[!wikipedia Reference (computer science) desc="References"]]
-*      [[!wikipedia Pointer (computing) desc="Pointers"]]
-*      [Pointers in OCaml](http://caml.inria.fr/resources/doc/guides/pointers.html)
 
 ## 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)
+*      [All About Monads](http://haskell.org/all_about_monads/html/index.html)
+*      From HaskwellWiki:
+       [Monad tutorials timeline](http://www.haskell.org/haskellwiki/Monad_tutorials_timeline)
+       | [Monad laws](http://www.haskell.org/haskellwiki/Monad_Laws)
+       | [Monads as computation](http://www.haskell.org/haskellwiki/Monads_as_computation)
+       | [Monads as containers](http://www.haskell.org/haskellwiki/Monads_as_containers)
+       | [What a monad is not](http://www.haskell.org/haskellwiki/What_a_Monad_is_not)
+*      [Haskell wikibook: Understanding monads](http://en.wikibooks.org/wiki/Haskell/Understanding_monads)
+
+*      [You Could Have Invented Monads! (And Maybe You Already Have.)](http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html)
+*      Yet Another Monad Tutorial: [part 1](http://mvanier.livejournal.com/3917.html) [part 2](http://mvanier.livejournal.com/4305.html)
+*      [Monads for the Working Haskell Programmer -- a short tutorial](http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm)
+*      [Introduction to Haskell: Monads](http://onlamp.com/pub/a/onlamp/2007/08/02/introduction-to-haskell-pure-functions.html)
+*      [SPb Haskell User Group: Monad tutorial](http://spbhug.folding-maps.org/wiki/MonadsEn)
 *      [Understanding Haskell Monads](http://ertes.de/articles/monads.html)
-*      [The State Monad: a tutorial for the confused?](http://coder.bsimmons.name/blog/2009/10/the-state-monad-a-tutorial-for-the-confused/)
+*      [A Monad Tutorial for OCaml](http://enfranchisedmind.com/blog/posts/a-monad-tutorial-for-ocaml/)
 *      [Beyond Monads](http://blog.sigfpe.com/2009/02/beyond-monads.html)
 *      [Simple Explanation of a Monad](http://math.stackexchange.com/questions/405/simple-explanation-of-a-monad)
 *      [What is a Monad?](http://stackoverflow.com/questions/44965/what-is-a-monad)
@@ -143,24 +151,29 @@ get more out of. (Rinse and repeat.)
 [Part 4](http://james-iry.blogspot.com/2007/11/monads-are-elephants-part-4.html)
 *      [Brian Beckman: Don't fear the Monad (67 minute video)](http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/)
 *      [A monad non-tutorial...or why you shouldn't ask what a monad is](http://strongtyped.blogspot.com/2010/01/monad-non-tutorial.html)
+*      [Abstraction, intuition, and the "monad tutorial fallacy"](http://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/)
+*      [How you should(n't) use Monad](http://noordering.wordpress.com/2009/03/31/how-you-shouldnt-use-monad/)
 *      [The Mother of all Monads](http://blog.sigfpe.com/2008/12/mother-of-all-monads.html)
-*      [You Could Have Invented Monads! (And Maybe You Already Have.)](http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html)
 *      [Monads! (and Why Monad Tutorials Are All Awful)](http://ahamsandwich.wordpress.com/2007/07/26/monads-and-why-monad-tutorials-are-all-awful/)
 *      [Of monads and spacesuits (archived)](http://www.iterasi.net/openviewer.aspx?sqrlitid=ixx7fcluvek_9lfolsxr_g)
-*      [Haskell wikibook: Understanding monads](http://en.wikibooks.org/wiki/Haskell/Understanding_monads)
-*      Haskell state monads: [part 1](http://mvanier.livejournal.com/1765.html) [part 2](http://mvanier.livejournal.com/1901.html)
 *      [How not to explain Haskell monads](http://mvanier.livejournal.com/1205.html)
-*      Yet Another Monad Tutorial: [part 1](http://mvanier.livejournal.com/3917.html) [part 2](http://mvanier.livejournal.com/4305.html)
-       [part 3](http://mvanier.livejournal.com/4586.html) [part 4](http://mvanier.livejournal.com/4647.html)
+*      [The State Monad: a tutorial for the confused?](http://coder.bsimmons.name/blog/2009/10/the-state-monad-a-tutorial-for-the-confused/)
+*      Haskell state monads: [part 1](http://mvanier.livejournal.com/1765.html) [part 2](http://mvanier.livejournal.com/1901.html) [part 3](http://mvanier.livejournal.com/4586.html) [part 4](http://mvanier.livejournal.com/4647.html)<p>
 *      [Research Papers/Monads and Arrows](http://www.haskell.org/haskellwiki/Research_papers/Monads_and_arrows)
-*      [Philip Wadler. Monads for Functional Programming](http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf):
-in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Springer Verlag, NATO ASI Series F: Computer and systems sciences, Volume 118, August 1992. Also in J. Jeuring and E. Meijer, editors, *Advanced Functional Programming*, Springer Verlag, LNCS 925, 1995. Some errata fixed August 2001.
-       The use of monads to structure functional programs is described. Monads provide a convenient framework for simulating effects found in other languages, such as global state, exception handling, output, or non-determinism. Three case studies are looked at in detail: how monads ease the modification of a simple evaluator; how monads act as the basis of a datatype of arrays subject to in-place update; and how monads can be used to build parsers.
+*      [Eugenio Moggi, Notions of Computation and Monads](http://www.disi.unige.it/person/MoggiE/ftp/ic91.pdf): Information and Computation 93 (1) 1991.
 *      [Philip Wadler. The essence of functional programming](http://homepages.inf.ed.ac.uk/wadler/papers/essence/essence.ps):
 invited talk, *19'th Symposium on Principles of Programming Languages*, ACM Press, Albuquerque, January 1992.
-       This paper explores the use monads to structure functional programs. No prior knowledge of monads or category theory is required.
+<!--   This paper explores the use monads to structure functional programs. No prior knowledge of monads or category theory is required.
        Monads increase the ease with which programs may be modified. They can mimic the effect of impure features such as exceptions, state, and continuations; and also provide effects not easily achieved with such features. The types of a program reflect which effects occur.
-       The first section is an extended example of the use of monads. A simple interpreter is modified to support various extra features: error messages, state, output, and non-deterministic choice. The second section describes the relation between monads and continuation-passing style. The third section sketches how monads are used in a compiler for Haskell that is written in Haskell.
+       The first section is an extended example of the use of monads. A simple interpreter is modified to support various extra features: error messages, state, output, and non-deterministic choice. The second section describes the relation between monads and continuation-passing style. The third section sketches how monads are used in a compiler for Haskell that is written in Haskell.-->
+*      [Philip Wadler. Monads for Functional Programming](http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf):
+in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Springer Verlag, NATO ASI Series F: Computer and systems sciences, Volume 118, August 1992. Also in J. Jeuring and E. Meijer, editors, *Advanced Functional Programming*, Springer Verlag, LNCS 925, 1995. Some errata fixed August 2001.
+<!--   The use of monads to structure functional programs is described. Monads provide a convenient framework for simulating effects found in other languages, such as global state, exception handling, output, or non-determinism. Three case studies are looked at in detail: how monads ease the modification of a simple evaluator; how monads act as the basis of a datatype of arrays subject to in-place update; and how monads can be used to build parsers.-->
+*      Ken Shan [Monads for natural language semantics](http://arxiv.org/abs/cs/0205026v1) (2001) uses reader monad to implement intensionality.
+*      Ben-Avi and Winter [A modular approach to intensionality](http://parles.upf.es/glif/pub/sub11/individual/bena_wint.pdf) (2007) reinvents the technique.
+       <!--http://citeseerx.ist.psu.edu/viewdocsummary?doi=10.1.1.73.6927-->
+*      Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs" [not sure which paper]
+
 
 ## Monads in Category Theory ##
 
@@ -178,6 +191,22 @@ invited talk, *19'th Symposium on Principles of Programming Languages*, ACM Pres
 *      [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 ##
+
+*      [[!wikipedia Referential transparency (computer science)]]
+*      [[!wikipedia Side effect (computer science) desc="Side effects"]]
+*      [[!wikipedia Imperative programming]]
+*      [[!wikipedia Reference (computer science) desc="References"]]
+*      [[!wikipedia Pointer (computing) desc="Pointers"]]
+*      [Pointers in OCaml](http://caml.inria.fr/resources/doc/guides/pointers.html)
+
+
+## The Curry-Howard Correspondence ##
+*      The [[!wikipedia Curry-Howard isomorphism]]
+*      [The Curry-Howard correspondence in Haskell](http://www.thenewsh.com/~newsham/formal/curryhoward/)
+*      [The Curry-Howard Isomorphism](http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism) at Haskell wiki<p>
+
+
 ## Continuations ##
 
 *      [[!wikipedia Continuation]]