
"Felix Martini"
[..]
data QualifiedName = QualifiedName { name :: String uri :: Maybe String prefix :: Maybe String }
but the global scope of the record field names doesn't allow that and therefore all kinds of abbreviations are inserted in front of the record field names which are hard to remember. So a better record syntax would be welcome. Perhaps the constructor could be used to limit the scope of the record field name e.g. QualifiedName.prefix?
/me votes for introducing
data Attribute = Attribute { Attribute.key :: QualifiedName Attribute.value :: String }
It's surely gonna be used, and iff it becomes exceedingly wide-spread, it can be made default (in 10 years or so). OTOH, I don't like the idea of having to write "Attribute" all the time, and neither want to write pages of attrKey = Attribute.key for 1000-element records (or TH to tackle standard language problems, for that matter), so there has to be some way for library users to shorten code without being masochistic, somewhat like this: A = Attribute , that is, allow definition of data constructors in usual declarations, up to some limits. -- (c) this sig last receiving data processing entity. Inspect headers for copyright history. All rights reserved. Copying, hiring, renting, performance and/or quoting of this signature prohibited.