Folks,
I'm about to put out (what I hope is) the final revised Haskell98
report.
Here, though, is one good point I propose to clarify. I propose to say
that
every H98 impl must support tuples up to size 7
and their instances for Eq, Ord, Bounded, Read, Show
[Of course, one might hope that impls would do better, but the report
should be conservative.]
Simon
| -----Original Message-----
| From: Olaf Chitil [mailto:[EMAIL PROTECTED]]
| Sent: 23 April 2001 12:11
| To: [EMAIL PROTECTED]
| Cc: [EMAIL PROTECTED]; Simon Peyton-Jones
| Subject: Re: Eq instance for (a,b,c,d,e) and upwards
|
|
|
| I think that this discussion about tuples shows that there is
| a problem with the Haskell 98 report which should be
| corrected. I hope Simon accepts it as a minor bug fix.
|
| 1) The current wording of paragraph 6.1.4 is highly ambigious.
|
| > 6.1.4 Tuples
| >
| > Tuples are algebraic datatypes with special syntax, as defined
| > in Section 3.8. Each tuple type has a single constructor. There
| > is no upper bound on the size of a tuple. However, some Haskell
| > implementations may restrict the size of tuples and limit the
| > instances associated with larger tuples. The Prelude and
| libraries
| > define tuple functions such as zip for tuples up to a
| size of 7. All
| > tuples are instances of Eq, Ord, Bounded, Read, and Show. Classes
| > defined in the libraries may also supply instances for
| tuple types.
|
| May the limit for the size of tuples and the limit for
| instances be different? Do tuples exist at least for a size
| up to 7? What is the purpose of the last sentence?
|
| We should decide what we want and the paragraph should then
| state it clearly.
|
| 2) The arbitrary restrictions that Haskell implementations
| are permitted to apply, basically imply that you shouldn't
| use tuples at all if you want your code to be portable. Maybe
| there isn't even a Show instance for ()?
|
| So I think the report should demand that tuples and instances
| for Eq,Ord,Bounded,Read and Show should be implemented for at
| least up to a size of a given number n.
|
| 3) I propose this number n to be 7. This fits well with the
| fact that zip etc are defined for tuples up to a size of 7. I
| agree with Martin that you should use a labelled record or at
| least an own type instead of large tuples anyway.
| Programs that generate code should als generate definitions
| for data types, if large product types are needed.
|
| Olaf
|
| --
| OLAF CHITIL,
| Dept. of Computer Science, University of York, York YO10 5DD, UK.
| URL: http://www.cs.york.ac.uk/~olaf/
| Tel: +44 1904 434756; Fax: +44 1904 432767
|
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell