[Haskell-cafe] Partial record access

Georgi Lyubenov godzbanebane at gmail.com
Fri Nov 19 09:24:39 UTC 2021

Hey Cafe,

With the advent of RecordDotSyntax (or more precisely OverloadedRecordDot?)
in 9.2, I was expecting this wart to be fixed:

data Ty
  = X {x :: String}
  | Y {y :: Int}

> y $ X "lol"
*** Exception: No match in record selector y

As it seems like the perfect opportunity to introduce a breaking change for
a behaviour that is usually undesirable (in my experience).

But instead:

> :set -XOverloadedRecordDot
> (X "lol").y
*** Exception: No match in record selector y

Unfortunately, I couldn't follow and/or remember all of the discussion
around RecordDotSyntax, so this might be something I missed.

Is there a reason why we don't generate HasField x r a only when all of the
constructors for r have a field "x" :: a? If not, is the community open to
changing this, while the new extension is still ripe?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20211119/3fe9cbcc/attachment.html>

More information about the Haskell-Cafe mailing list