title: map function if a predicate holds
body: <p>I feel like this should be fairly obvious, or easy, but I just can't get it. What I want to do is apply a function to a list (using <code>map</code>) but only if a condition is held. Imagine you only wanted to divide the numbers which were even:</p>
  
  <pre><code>map (`div` 2) (even) [1,2,3,4]
  </code></pre>
  
  <p>And that would give out <code>[1,1,3,2]</code> since only the even numbers would have the function applied to them. Obviously this doesn't work, but is there a way to make this work without having to write a separate function that you can give to <code>map</code>? <code>filter</code> is almost there, except I also want to keep the elements which the condition doesn't hold for, and just not apply the function to them.</p>