<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Oops, here's the code.<br><br>Michael<br><br>===========================<br><br>{- Author:&nbsp;&nbsp;&nbsp;&nbsp; Jeff Newbern<br>&nbsp;&nbsp; Maintainer: Jeff Newbern &lt;jnewbern@nomaware.com&gt;<br>&nbsp;&nbsp; Time-stamp: &lt;Mon Nov 10 11:59:14 2003&gt;<br>&nbsp;&nbsp; License:&nbsp;&nbsp;&nbsp; GPL<br>-}<br><br>{- DESCRIPTION<br><br>Example 1 - Our first monad<br><br>Usage: Compile the code and execute the resulting program.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It will print Dolly's maternal grandfather.<br>-}<br><br>-- everything you need to know about sheep<br>data Sheep = Sheep {name::String, mother::Maybe Sheep, father::Maybe Sheep}<br><br>-- we show sheep by name<br><br>instance Show Sheep where<br>&nbsp; show s = show (name s)<br><br>-- comb is a combinator for sequencing operations that return Maybe<br><br>comb :: Maybe a -&gt; (a -&gt; Maybe
 b) -&gt; Maybe b<br>comb Nothing&nbsp; _ = Nothing<br>comb (Just x) f = f x<br><br>-- now we can use `comb` to build complicated sequences<br>maternalGrandfather :: Sheep -&gt; Maybe Sheep<br>maternalGrandfather s = (Just s) `comb` mother `comb` father<br><br>fathersMaternalGrandmother :: Sheep -&gt; Maybe Sheep<br>fathersMaternalGrandmother s = (Just s) `comb` father `comb` mother `comb` mother <br><br>mothersPaternalGrandfather :: Sheep -&gt; Maybe Sheep<br>mothersPaternalGrandfather s = (Just s) `comb` mother `comb` father `comb` father <br><br>-- this builds our sheep family tree<br>breedSheep :: Sheep<br>breedSheep = let adam&nbsp;&nbsp; = Sheep "Adam" Nothing Nothing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eve&nbsp;&nbsp;&nbsp; = Sheep "Eve" Nothing Nothing<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;uranus = Sheep "Uranus" Nothing Nothing<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;gaea&nbsp;&nbsp; = Sheep "Gaea" Nothing Nothing<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;kronos = Sheep "Kronos" (Just gaea) (Just uranus)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; holly&nbsp; = Sheep "Holly" (Just eve) (Just adam)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; roger&nbsp; = Sheep "Roger" (Just eve) (Just kronos)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; molly&nbsp; = Sheep "Molly" (Just holly) (Just roger)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; in Sheep "Dolly" (Just molly) Nothing<br><br>-- print Dolly's maternal grandfather<br>main :: IO ()<br>main = let dolly = breedSheep<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in do print (father dolly)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>-- END OF FILE<br><br>--- On <b>Wed, 4/29/09, Yitzchak Gale <i>&lt;gale@sefer.org&gt;</i></b> wrote:<br><blockquote
 style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Yitzchak Gale &lt;gale@sefer.org&gt;<br>Subject: Re: [Haskell-cafe] chr/ord?<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: "Brandon S. Allbery KF8NH" &lt;allbery@ece.cmu.edu&gt;, "haskell-cafe@haskell.org" &lt;haskell-cafe@haskell.org&gt;<br>Date: Wednesday, April 29, 2009, 4:30 AM<br><br><div class="plainMail">Michael Rice wrote:<br>&gt; -- comb is a combinator for sequencing operations that return Maybe<br>&gt; comb :: Maybe a -&gt; (a -&gt; Maybe b) -&gt; Maybe b<br>&gt; comb Nothing&nbsp; _ = Nothing<br>&gt; comb (Just x) f = f x<br><br>comb is essentially the same as something in the Prelude:<br>it is just (&gt;&gt;=) specialized to Maybe.<br><br>(&gt;&gt;=) :: Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b<br><br>&gt; Now what am I misunderstanding in the code below?<br>&gt; lst = [('A',65),('B',66),('C',67),('D',68)]<br><br>Brandon S. Allbery
 wrote:<br>&gt; ...it defaulted to [(Char,Integer)]. &nbsp;This is a manifestation<br>&gt; of the Monomorphism Restriction...<br><br>While it may be debatable whether the Monomorphism<br>Restriction is helpful in compiled code, it is unquestionably<br>a major nuisance at the GHCi prompt, for this and other<br>reasons.<br><br>I highly recommend that you create a .ghci file in your home<br>directory containing the line:<br><br>:set -XNoMonomorphismRestriction<br><br>In my opinion, MR should be off by default in GHCi.<br><br>-Yitz<br></div></blockquote></td></tr></table><br>