| >> we implicitly get
| >> f :: T -> Int
| >> which punning shadows with
| >> f :: Int   
| >> whereas I generally avoid shadowing completely.
| >
| > I agree with Ian.
| 
| I tend to agree.

I originally had field puns in GHC, and then took them out when Haskell 98 
removed them, after a discussion very like this one.  I put them back in 
because some people really wanted them.  

Actually GHC has three separate extensions to do with named fields:

        field disambiguation (Section 7.3.14)
        field puns (Section 7.3.15)
        field wildcards (Section 7.3.16)

Look here 
http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#disambiguate-fields


Opinions differ.  I'm rather with John: let the programmer choose, rather than 
enforcing a style in the language. For punning, the programmer can certainly 
choose on a case by case basis.  If you use Haskell 98's existing syntax, there 
is no change to the semantics if you switch on field puns:

        data T = C { f :: Int }

        foo (C {f = x}) = ...   -- No punning
        bar (C {f})     = ...   -- Punning

It would help this discussion if someone created a ticket to explain the actual 
proposal, so that we are all discussing the same thing.

Simon

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

Reply via email to