<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">I've been working through this example from: http://en.wikibooks.org/wiki/Haskell/Understanding_monads<br><br>I understand what they're doing all the way up to the definition of (&gt;&gt;), which duplicates Prelude function (&gt;&gt;). To continue following the example, I need to know how to override the Prelude (&gt;&gt;) with the (&gt;&gt;) definition in my file rand.hs.<br><br>Michael<br><br>==============<br><br>[michael@localhost ~]$ cat rand.hs<br>import System.Random<br><br>type Seed = Int<br><br>randomNext :: Seed -&gt; Seed<br>randomNext rand = if newRand &gt; 0 then newRand else newRand + 2147483647<br>&nbsp;&nbsp;&nbsp; where newRand = 16807 * lo - 2836 * hi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (hi,lo) = rand `divMod` 127773<br><br>toDieRoll :: Seed -&gt; Int<br>toDieRoll seed = (seed `mod` 6) + 1<br><br>rollDie :: Seed -&gt;
 (Int, Seed)<br>rollDie seed = ((seed `mod` 6) + 1, randomNext seed)<br><br>sumTwoDice :: Seed -&gt; (Int, Seed)<br>sumTwoDice seed0 =<br>&nbsp; let (die1, seed1) = rollDie seed0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (die2, seed2) = rollDie seed1<br>&nbsp; in (die1 + die2, seed2)<br><br>(&gt;&gt;) m n = \seed0 -&gt;<br>&nbsp; let (result1, seed1) = m seed0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (result2, seed2) = n seed1<br>&nbsp; in (result2, seed2)<br><br>[michael@localhost ~]$ <br><br></td></tr></table><br>