<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">There's a lot of well thought out stuff in Haskell, but getting familiar with it all seems like a huge task.<br><br>Thanks for the help.<br><br>Michael<br><br><br>--- On <b>Tue, 4/21/09, Ross Mellgren <i>&lt;rmm-haskell@z.odi.ac&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Ross Mellgren &lt;rmm-haskell@z.odi.ac&gt;<br>Subject: Re: [Haskell-cafe] Getting the x out<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: haskell-cafe@haskell.org<br>Date: Tuesday, April 21, 2009, 8:53 PM<br><br><div id="yiv1019631601">If you want to just get the value out, meaning you'll get a program error if it happens to be Nothing, then you can use Data.Maybe.fromJust. But usually, you'd want to preserve the Nothing. Applicative or Monad is pretty good for this:<div><br></div><div>import
 Control.Applicative</div><div><br></div><div>(3+) &lt;$&gt; safeDivision 10 5<br></div><div><br></div><div>the result will be Just 5.0 in this case, but if the division was incorrect it would be nothing.</div><div><br></div><div>If you want to do something else, you can either pattern match on it:</div><div><br></div><div>case safeDivision 10 5 of</div><div>&nbsp;&nbsp;Just x -&gt; -- do something with x</div><div>&nbsp;&nbsp;Nothing -&gt; -- do something else</div><div><br></div><div>or use some functions from Data.Maybe. Say you want to evaluate to 1 instead of Nothing:</div><div><br></div><div>import Data.Maybe</div><div><br></div><div>fromMaybe 1 (safeDivision 10 5)</div><div><br></div><div>-Ross</div><div><br></div><div><div><div><div>On Apr 21, 2009, at 8:49 PM, michael rice wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit;
 font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit; -x-system-font: none;" valign="top">How do I get the x out of Just x?<br><br>Michael<br><br>=============<br><br>safeDivision :: Float -&gt; Float -&gt; Maybe Float <br>safeDivision x y = if y == 0 then Nothing else Just (x/y)<br><br>*Main Data.List&gt; safeDivision 10 5<br>Just 2.0<br>*Main Data.List&gt; 3 + (safeDivision 10 5)<br><br>&lt;interactive&gt;:1:0:<br>&nbsp;&nbsp;&nbsp; No instance for (Num (Maybe Float))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arising from a use of `+' at &lt;interactive&gt;:1:0-22<br>&nbsp;&nbsp;&nbsp; Possible fix: add an instance declaration for (Num (Maybe Float))<br>&nbsp;&nbsp;&nbsp; In the expression: 3 + (safeDivision 10 5)<br>&nbsp;&nbsp;&nbsp; In the definition of `it': it = 3 + (safeDivision 10 5)<br>*Main Data.List&gt; <br><br></td></tr></tbody></table><br>      
 _______________________________________________<br>Haskell-Cafe mailing list<br><a rel="nofollow" ymailto="mailto:Haskell-Cafe@haskell.org" target="_blank" href="/mc/compose?to=Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>http://www.haskell.org/mailman/listinfo/haskell-cafe<br></blockquote></div><br></div></div></div></blockquote></td></tr></table><br>