[RFC] Mutable records as a GHC extension
Haskell Community [Unofficial]
April 4, 2026
There’s a distinction here between independent values grouped together for ease of access and a well-formed set of interdependent values. In my mind mutable records are for the first case and ADTs are for the second. Mutable records are updated; ADTs are constructed. The syntax should reflect this mental model.
There also other benefits to the alternate formulation, e.g. it would avoid the confusion caused by -Wambiguous-fields (see e.g. topic #9545), and it would allow feeding fields from other types (a better equivalence is
let Foo { .. ] = x in Bar { a = b, .. }).
Discussion in the ATmosphere