On 12/11/2010 9:22 AM, Richard O'Keefe wrote:

On 12/11/2010, at 2:17 AM, Michael Snoyman wrote:
So why would you ever need to reuse the same field name in the same
module?

data PetOwner
data FurnitureOwner

data Cat = Cat { owner :: PetOwner }
data Chair = Chair { owner :: FurnitureOwner }

Just the first thing that came to mind, this kind of thing comes up
often enough to be an irritant. I'm not sure whether or not TDNR is a
good solution to the problem, just pointing out a use case.

I'm afraid it's not a *convincing* use case.
It's not convincing because here "owner" *means different things*.


consider "length" ...

I have records with the attribute length, length can be given as an Int, Double, Float or maybe as a constructed type "Length", length's use as a record selector would also clash with List.length. All these have the same denotation.

should I then seporate into int_length, float_length, or use rec1_length, rec2_length etc etc...

for proper name space management why should I have to define each record
that defines a length field with different representation in distinct modules, or with different names for the field label when they denote the same thing?

This is easily handled in C, Pascal, PL/1, Cobol why not in Haskell ?


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

Reply via email to