title: How function snd in Haskell works in filter
body: <p>I type this code to ghci</p>
  
  <pre><code>Prelude&gt; filter snd [('a',True),('b',True),('c',False),('d',True)]
  </code></pre>
  
  <p>why it returns</p>
  
  <pre><code>[('a',True),('b',True),('d',True)]
  </code></pre>
  
  <p>rather than</p>
  
  <pre><code>[('a',True),('c',False),('d',True)]
  </code></pre>
  
  <p><code>snd</code> function returns the second item, so why not <code>filter snd</code> filter the second item?</p>