title: What's the difference between equal?, eql?, ===, and ==?
body: <p>I am trying to understand the difference between these four methods. I know by default that <code>==</code> calls the method <code>equal?</code> which returns true when both operands refer to exactly the same object.</p>
  
  <p><code>===</code> by default also calls <code>==</code> which calls <code>equal?</code>... okay, so if all these three methods are not overridden, then I guess
  <code>===</code>, <code>==</code> and <code>equal?</code> do exactly the same thing?</p>
  
  <p>Now comes <code>eql?</code>. What does this do (by default)? Does it make a call to the operand's hash/id? </p>
  
  <p>Why does Ruby have so many equality signs? Are they supposed to differ in semantics?</p>