Simon Marlow wrote:
> 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.

What about using field names as functions?

    flushWriteBuffer h@(Handle {}) = do
        ... buffer h ...

Of course, you always have to drag  h  around.


Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com

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

Reply via email to