title: Scala List.contains(x) return false, but exists(_.== x) returns true
body: <p>I'm working with some simple data structures and collections in Scala and I've noticed what I think is strange behavior. Here's the object:</p>
  
  <pre><code>class State (protected val trackmap: Map[Int, List[String]]) {
  
    override def clone : State = {
      new State(Map() ++ trackmap)
    }
  
    override def toString = { "State: " + trackmap.toString }
  
    def equals (other: State) : Boolean = {
      //println("Comparing " + trackmap + " to " + other.trackmap)
      trackmap == other.trackmap  
  
    }
  
    def == (other: State) : Boolean = {
      this equals other
    }
  }
  </code></pre>
  
  <p>And my related tests:</p>
  
  <pre><code>  test("state equality") {
      val state = new State( Map(1 -&gt; List("engine"), 2 -&gt; List("a"), 3 -&gt; List("b")) )
  
      expect(true) { state equals state.clone }
      expect(true) { state == state.clone }
      expect(false) { state == new State(Map(1 -&gt; List("a"))) }
      expect(false) { state equals new State(Map(1 -&gt; List("a"))) }
  
      expect(true) { List(state).exists( _.equals (state.clone) )}
      expect(true) { List(state).exists( _.== (state.clone) )}
      expect(true) { List(state).contains( state.clone )}
    }
  </code></pre>
  
  <p>All of them pass except for the last one, which I expect should pass. I haven't looked at the Scala source, but I assume contains would be implemented basically as the second exists call.</p>