[Hugs-users] Record puns, time for removal?

John Meacham john at repetae.net
Tue Oct 31 18:57:22 EST 2006

On Tue, Oct 31, 2006 at 02:42:58PM -0500, Seth Kurtzberg wrote:
> As to why it might be confusing, I realize this is extremely
> subjective.  Suppose you have a record type, and add a constructor to
> it.  As things stand, I can use the compiler to be certain that I've
> found all areas of the code that require changes because of the
> addition of the constructor (with the flag that tells gcc to find
> non-exhaustive pattern matches).  Using the compiler in this manner is
> (IMO) one of the things that makes refactering in Haskell so much
> easier than some other languages.
> OK, now, if the pun feature is on, it's no longer illegal to provide
> processing for only one constructor.  (That's not the only thing it
> does, but that is one thing that it does.)

I am not sure what you mean here

data Foo = Foo { foo :: Int }

f Foo { .. } = foo

now if we change 
data Foo = Foo { foo :: Int } | Bar { bar :: Int }

then f gets an incomplete pattern match warning.


John Meacham - ⑆repetae.net⑆john⑈

More information about the Glasgow-haskell-users mailing list