title: Shorthand way for assigning a single field in a record, while copying the rest of the fields?
body: <p>Let's say I have the following record ADT:</p>
  
  <pre><code>data Foo = Bar { a :: Integer, b :: String, c :: String }
  </code></pre>
  
  <p>I want a function that takes a record and returns a record (of the same type) where all but one of the fields have identical values to the one passed as argument, like so:</p>
  
  <pre><code>walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
  </code></pre>
  
  <p>The above works, but for a record with more fields (say <code>10</code>), creating a such function would entail a lot of typing that I feel is quite unnecessary. </p>
  
  <p>Are there any less tedious ways of doing the same?</p>