X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=topics%2F_week8_reader_monad.mdwn;h=56c4eb42b09b90e3ed6667656a70769efad8bc1b;hp=2e7ede8ac5bdf8b8d9ee9565a67a57e0b6fcce4a;hb=999482199644652197bf1ce79085cc97963cdd02;hpb=d1b82e795c985012df8298926eec35b5a2cc49b6 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))))