Wow, I had no idea there were so many record packages! This indicates a couple things to me: a) Haskell is very flexible. b) I&#39;m not the only one who things the built-in record system isn&#39;t perfect. <div><br></div>
<div>Digging a bit deeper, it looks like some of the record-related ghc extensions might also be useful, such as record punning and field disambiguation. </div><div>Since these are already extensions, they&#39;re more likely to make it into Haskell 20XX. Are these considered to be the solution to current record syntax problems? </div>
<div><br></div><div>With these extensions, couldn&#39;t I write the following?</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">&gt;someUpdate :: MyRecord -&gt; MyRecord<br>
&gt;someUpdate myRecord@(MyRecord{..}) = let <br>&gt;     { field1 = f field1<br>&gt;     , field2 = g field2<br>&gt;     , field3 = h filed3<br>&gt;     } in myRecord{..}</span></div>