Date: Mon, 30 Mar 2015 01:53:16 +0000 (0400)
Subject: edits
XGitUrl: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=999482199644652197bf1ce79085cc97963cdd02
edits

diff git a/topics/_week8_reader_monad.mdwn b/topics/_week8_reader_monad.mdwn
index 2e7ede8a..56c4eb42 100644
 a/topics/_week8_reader_monad.mdwn
+++ b/topics/_week8_reader_monad.mdwn
@@ 171,32 +171,7 @@ With these adjustments, the faulty computation now completes smoothly:
1. Reduce head ((map2 +) >
The Reader Monad
================

The goal for this part is to introduce the Reader Monad, and present
two linguistics applications: binding and intensionality. Along the
way, we'll continue to think through issues related to order, and a
related notion of flow of information.

At this point, we've seen monads in general, and three examples of
monads: the identity monad (invisible boxes), the Maybe monad (option
types), and the List monad.

We've also seen an application of the Maybe monad to safe division.
The starting point was to allow the division function to return an int
option instead of an int. If we divide 6 by 2, we get the answer Just
3. But if we divide 6 by 0, we get the answer Nothing.

The next step was to adjust the other arithmetic functions to know how
to handle receiving Nothing instead of a (boxed) integer. This meant
changing the type of their input from ints to int options. But we
didn't need to do this piecemeal; rather, we could "lift" the ordinary
arithmetic operations into the monad using the various tools provided
by the monad.

So let's see how this works in terms of a specific computation.

+%%%
\tree ((((+) (1)) (((*) (((/) (6)) (2))) (4))))