<div dir="ltr">In my application, I want some of the fields in a record to have default values while others must always be specified by the user.  I can implement this using the rawr records library (<a href="http://hackage.haskell.org/package/rawr">http://hackage.haskell.org/package/rawr</a>) like so:<div><br></div><div><div>def :: ("b" := String) -> R ("a" := Int, "b" := String)</div><div>def t = (R (#a := 0) :*: R t) -- merge with defaults</div><div> </div><div>let r = def (#b := "hello")<br></div></div><div><br></div><div>Here field "a" has a default value (i.e. it is optional when "def" is used) but field "b" does not have a default value and has to be explicitly specified by the user. This is made possible by record merging feature of rawr, making the record extensible. </div><div><br></div><div>I could not find an equivalent way of achieving this using overloaded records (<a href="http://hackage.haskell.org/package/overloaded-records">http://hackage.haskell.org/package/overloaded-records</a>). Is record merging possible or can be made possible using overloaded-records or with the ghc overloaded records poposal? If not, is there a plan to make something like this possible in future? Or will this never be possible with the in built record syntax?</div><div><br></div><div>Note that, this is handy to simulate mandatory and optional keyword arguments to a function by passing them in the form of a record. Something which is available in other languages like python.<br></div><div><br></div><div>-harendra</div></div>