I have seen some talk about fixing this, but none anywhere close to reality. As 
far as what you can use now, there are several libraries implementing 
alternatives to records; 'vinyl' uses type-level literal strings and is very 
slick (although all fields with the same name have the same type), while 
'fields' uses template Haskell (and I think there are some others as well). I 
have used 'vinyl' a fair amount with great success; the others I cannot 
evaluate from experience.

-IRS
________________________________________
From: haskell-cafe-boun...@haskell.org [haskell-cafe-boun...@haskell.org] on 
behalf of Johannes Waldmann [waldm...@imn.htwk-leipzig.de]
Sent: Tuesday, April 16, 2013 8:17 AM
To: haskell-cafe@haskell.org
Subject: [Haskell-cafe] data types with overlapping component names (in one     
module)?

What is the current situation: can we have two types
with overlapping component names in one module?

module M where
data T1 = C1 { foo :: Int }
data T2 = C2 { foo :: String }

It seems not (ghc says: Multiple declarations of 'foo'). This comes close:
http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/syntax-extns.html#disambiguate-fields
but still requires the definitions to reside in different modules?

This is a major pain (it forces me to spread the source over several files),
and also a show-stopper when selling Haskell to OO folks, who "naturally"
assume that a class also denotes a scope. (And that you could nest them.)

Are/were there plans/proposals to address this?

- J.W.



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



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

Reply via email to