GHC support for the new "record" package
Adam Gundry
adam at well-typed.com
Thu Jan 22 09:31:03 UTC 2015
On 22/01/15 05:38, Edward Kmett wrote:
> On Wed, Jan 21, 2015 at 4:34 PM, Adam Gundry wrote:
>
> I'm surprised and interested that you view this as a major source of
> complexity. From my point of view, I quite liked how the ability to
> overload fields as both selector functions and arbitrary lenses turned
> out. Compared to some of the hairy GHC internal details relating to name
> resolution, it feels really quite straightforward. Also, I've recently
> worked out how to simplify and generalise it somewhat (see [1] and [2]
> if you're curious).
>
>
> I'm actually reasonably happy with the design we wound up with, but the
> need to mangle all the uses of the accessor with a combinator to extract
> from the data type is a perpetual tax paid, that by giving in and
> picking a lens type and not having to _also_ provide a normal field
> accessor we could avoid.
That's a fair point, at least provided one is happy to work with the
canonical lens type we choose, because all others will require a
combinator. ;-)
Actually, the simplifications I recently came up with could allow us to
make uses of the field work as van Laarhoven lenses, other lenses *and*
selector functions. In practice, however, I suspect this might lead to
somewhat confusing error messages, so it might not be desirable.
Adam
> [1] https://github.com/adamgundry/records-prototype/blob/master/NewPrototype.hs
> [2] https://github.com/adamgundry/records-prototype/blob/master/CoherentPrototype.hs
--
Adam Gundry, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/
More information about the ghc-devs
mailing list