<br><br><div class="gmail_quote">2011/4/4 Daniel Fischer <span dir="ltr">&lt;<a href="mailto:daniel.is.fischer@googlemail.com">daniel.is.fischer@googlemail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5">On Monday 04 April 2011 17:15:20, Nadav Chernin wrote:<br>
&gt; Hello,<br>
&gt;<br>
&gt; I tried to write function mean - average of numeric list.<br>
&gt;<br>
&gt; mean::(Fractional a)=&gt;[a]-&gt;a<br>
&gt; mean a = (realToFrac (sum a)) / (realToFrac (length a))<br>
&gt;<br>
&gt; But error occures:<br>
&gt;<br>
&gt;               Could not deduce (Real a) from the context (Fractional b)<br>
&gt;               arising from a use of `realToFrac&#39;<br>
&gt; To correct this function, i rewrite this function:<br>
&gt;<br>
&gt; mean::(Real a, Fractional a)=&gt;[a]-&gt;b<br>
&gt; mean a = (realToFrac (sum a)) / (realToFrac (length a))<br>
&gt;<br>
&gt; Is there most simple way to write this function?<br></div></div></blockquote><div><br>For simple functions it is often revealing to define it in ghci and only then ask its type:<br><br>-- your version:<br>Prelude&gt; let m2 as = (realToFrac $ sum as) / (realToFrac  $ length as)<br>
Prelude&gt; :t m2<br>m2 :: (Real a, Fractional b) =&gt; [a] -&gt; b<br><br>-- Daniel&#39;s version:<br>Prelude&gt; let m1 as = sum as / (fromIntegral $ length as)<br>Prelude&gt; :t m1<br>m1 :: (Fractional b) =&gt; [b] -&gt; b<br>
<br></div></div>