<div dir="ltr"><div>>:t f<br>f :: (Num b, Ord a) => a -> b -> a<br><br>a is an instance of Ord<br></div><div>b is an instance of Num<br></div><div><br>>:t 1<br>1 :: Num a => a<br></div><div>>:t f 1<br>f 1 :: (Num a, Num b, Ord a) => b -> a<br><br></div><div>the literal 1 is an instance of Num, therefore<br></div><div>a must be an instance of Ord but now also of Num<br></div><div><br></div><div>What we know about a is that it must be a Num (because we assigned it the literal 1 which is a Num) and that it must also be an Ord (because your original type signature specified that it must also be an Ord).<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 29, 2016 at 10:56 AM, Lai Boon Hui <span dir="ltr"><<a href="mailto:laiboonh@gmail.com" target="_blank">laiboonh@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All,<div><br></div><div>can some one explain to me why</div><div><br></div><div>ghci> let f:: (Ord a, Num b) => a -> b -> a ; f=undefined</div><div>ghci> :t f 1 2</div><div>ghci> f 1 2 :: (Num a, Ord a) => a<br clear="all"><div><br></div><div>The initial type signature just required <i>a</i> to be a type that is an instance of Ord but after it had the additional constraint of Ord as well???</div><span class="HOEnZb"><font color="#888888"><div><br></div><div><br></div>-- <br><div data-smartmail="gmail_signature"><div dir="ltr">Best Regards,<div>Boon Hui</div></div></div>
</font></span></div></div>
<br>______________________________<wbr>_________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>