title: Why add "Eq" type constraint without using "=="?
body: <p>So, I have a very simple function that take two parameters : the first is a hour (between 0 and 23) and the second one is a minute (between 0 and 59). This function return the hour plus one minute, and format the hour in a beautiful style. By example, <code>hour 11 12</code> return <code>11 heures et 13 minutes</code>. Sorry for the french format of the hour. </p>
  
  <p>So, I use in this function the <code>show</code> function, and the parameters need to be a number, so I have the type declaration <code>(Num a, Show a) =&gt; a -&gt; a -&gt; String</code>. But, when I try the function, I got an error and GHC say to me to add the <code>Eq</code> type constraint, but I don't understand why I need the <code>Eq</code> type constraint in this case. There is the code (again, sorry for the french text used in the function, but I think that it's not very important if you don't understand the function name and the text) : </p>
  
  <pre><code>heure :: (Num a, Eq a, Show a) =&gt; a -&gt; a -&gt; String
  heure 23 59 = "Minuit"
  heure 12 m  = "Midi et " ++ show (m+1) ++ " minutes"
  heure h 59  = show (h+1) ++ " heures"
  heure h m   = show h ++ " heures et " ++ show (m+1) ++ " minutes"
  </code></pre>
  
  <p>So : if I don't use <code>Eq</code>, I have an error and when I use it my code is correct. Why?</p>
  
  <p>Thank you for your explanations!</p>