From: Chris Date: Mon, 30 Mar 2015 01:53:16 +0000 (-0400) Subject: edits X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=999482199644652197bf1ce79085cc97963cdd02;ds=sidebyside 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))))