On 24/02/10 18:23, Ian Lynagh wrote:
On Tue, Feb 23, 2010 at 07:07:30PM -0800, Iavor Diatchki wrote:

I'd like to propose that we add record punning to Haskell 2011.

Thoughts, objections, suggestions?

I have a feeling I'm in the minority, but I find record punning an ugly
feature.

Given
     data T = C { f :: Int }
we implicitly get
     f :: T ->  Int
which punning shadows with
     f :: Int
whereas I generally avoid shadowing completely.

While I agree with these points, I was converted to record punning (actually record wildcards) when I rewrote the GHC IO library. Handle is a record with 12 or so fields, and there are literally dozens of functions that start like this:

  flushWriteBuffer :: Handle -> IO ()
  flushWriteBuffer Handle{..} = do

if I had to write out the field names I use each time, and even worse, think up names to bind to each of them, it would be hideous.

There are reasons to find this distasteful, yes, but I think the alternative is much worse.

I'm not proposing record wildcards (yet) *cough* labelled-field wildcards, but punning is a step in the right direction.

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to