<br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Is it proper/ok to defines them as :<br>fromIntegral :: (a::Integral) -&gt; (b::Num)
<br>and<br>round :: (a::RealFrac) -&gt; (b::Integral)&nbsp; ?
</blockquote><div><br>No; Integral, Num and RealFrac are type classes, not types.&nbsp; Think of a type class as a &quot;set of types&quot; which all support certain operations.&nbsp; For example, anything in the Num class must implement +, -, *, and a few other things.&nbsp; So a type signature like (Integral a) =&gt; a means &quot;any type a, as long as it is in the type class Integral&quot;.&nbsp; 
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Is RealFrac is-a Num ?</blockquote><div><br>Yes, any type which is in the RealFrac type class must also be in the Num type class. 
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Does the order matters in (Num b,Integral a) =&gt; a -&gt; b or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Integral a,Num b) =&gt; a -&gt; b
</blockquote><div><br>No, the order of type class constraints doesn&#39;t matter.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
With your encouragements, I&#39;ll keep pluuging. Thanks.
</blockquote><div><br>Good luck! <br></div>-Brent<br></div><br>