
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 -- John Meacham - ⑆repetae.net⑆john⑈