Merge branch 'pryor'
authorJim Pryor <profjim@jimpryor.net>
Sat, 4 Dec 2010 20:23:13 +0000 (15:23 -0500)
committerJim Pryor <profjim@jimpryor.net>
Sat, 4 Dec 2010 20:23:13 +0000 (15:23 -0500)
advanced_topics/monads_in_category_theory.mdwn
curry-howard.mdwn
translating_between_OCaml_Scheme_and_Haskell.mdwn
tree_and_list_zippers.mdwn
week7.mdwn

index 87c7886..0cdb5ab 100644 (file)
@@ -18,6 +18,10 @@ me to be a reasonable way to put the pieces together. We very much welcome
 feedback from anyone who understands these issues better, and will make
 corrections.
 
+Thanks Wren Thornton for helpful comments on these notes (not yet incorporated).
+
+[This page](http://en.wikibooks.org/wiki/Haskell/Category_theory) was a helpful starting point.
+
 
 Monoids
 -------
index 6cd08c1..fe861c4 100644 (file)
@@ -320,3 +320,9 @@ something like this:
        ! (!a->!b) --> ! (!a->!b->!c)->!a->!c
        --------------------------------------- R->
         --> ! (!a->!b)->! (!a->!b->!c)->!a->!c
+
+
+
+<!--
+http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism
+-->
index 4a4287a..63b3263 100644 (file)
@@ -670,6 +670,11 @@ Haskell has more built-in support for monads, but one can define the monads one
 
        which can be translated straightforwardly into OCaml.
 
+       For more details, see:
+
+       *       [Haskell Wikibook on do-notation](http://en.wikibooks.org/wiki/Haskell/do_Notation)
+       *       [Do-notation considered harmful](http://www.haskell.org/haskellwiki/Do_notation_considered_harmful)
+
 *      If you like the Haskell do-notation, there's [a library](http://www.cas.mcmaster.ca/~carette/pa_monad/) you can compile and install to let you use something similar in OCaml.
 
 *      In order to do any printing, Haskell has to use a special `IO` monad. So programs will look like this:
index ee627a7..1eb5d07 100644 (file)
@@ -247,6 +247,7 @@ where the targetted element is the root of our base tree. Like the "moving backw
 We haven't given you a real implementation of the tree zipper, but only a suggestive notation. We have however told you enough that you should be able to implement it yourself. Or if you're lazy, you can read:
 
 *      [[!wikipedia Zipper (data structure)]]
+*      [Haskell wikibook on zippers](http://en.wikibooks.org/wiki/Haskell/Zippers)
 *      Huet, Gerard. ["Functional Pearl: The Zipper"](http://www.st.cs.uni-sb.de/edu/seminare/2005/advanced-fp/docs/huet-zipper.pdf) Journal of Functional Programming 7 (5): 549-554, September 1997.
 *      As always, [Oleg](http://okmij.org/ftp/continuations/Continuations.html#zipper) takes this a few steps deeper.
 
index 961b024..8fb3a3c 100644 (file)
@@ -313,7 +313,7 @@ singing box (the end result of evaluting `u`) and bind the variable
 `x`".
 
 (Note that the above "do" notation comes from Haskell. We're mentioning it here
-because you're likely to see it when reading about monads. It won't work in
+because you're likely to see it when reading about monads. (See our page on [[Translating between OCaml Scheme and Haskell]].) It won't work in
 OCaml. In fact, the `<-` symbol already means something different in OCaml,
 having to do with mutable record fields. We'll be discussing mutation someday
 soon.)
@@ -458,7 +458,14 @@ arguments of a monoid operation) the two arguments of the bind are of
 different types.  But it's possible to make the connection between
 monads and monoids much closer. This is discussed in [Monads in Category
 Theory](/advanced_topics/monads_in_category_theory).
-See also <http://www.haskell.org/haskellwiki/Monad_Laws>.
+
+See also:
+
+*      [Haskell Wikibook on Monad Laws](http://www.haskell.org/haskellwiki/Monad_Laws).
+*      [Haskell Wikibook on Understanding Monads](http://en.wikibooks.org/wiki/Haskell/Understanding_monads)
+*      [Haskell Wikibook on Advanced Monads](http://en.wikibooks.org/wiki/Haskell/Advanced_monads)
+*      [Haskell Wikibook on do-notation](http://en.wikibooks.org/wiki/Haskell/do_Notation)
+
 
 Here are some papers that introduced monads into functional programming: