"Felix Martini" <fmart...@gmail.com> wrote:

> [..]
>
> 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.


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

Reply via email to