
On Fri, Apr 09, 2004 at 03:04:16PM +0200, Wolfgang Thaller wrote:
Ross Paterson wrote:
To have something concrete to discuss, I've placed a structure based on Edison at docs: http://www.soi.city.ac.uk/~ross/seq/ code: http://www.soi.city.ac.uk/~ross/seq.tar.gz
Looks nice. It's nice and simple, and I could start using it quickly, without breaking too much of my code. Some naming nitpicks:
Noted, but the names are mostly from Edison, and are just placeholders. The issue for the moment is whether the commonality between sequence implementations should be expressed by a Haskell 98 Sequence class or by a family of sequence modules that all export the same names.
The main difference to Robert's approach, aside from his anti-list propaganda ;-), seems to be that it uses a Haskell98-compatible single-parameter type class. This means that concrete Sequence instances can't add an Ord context later - Are we sure that there are no useful implementations of the Sequence class that require their members to be instances of Ord? I definitely can't think of any, but perhaps someone else can?
Yes, it's assumed that sequences are functors, which seems reasonable to me. It rules out treating unboxed arrays as sequences, but that doesn't seem a priority.
Also, we might really want to add an abstract collection framework later; that will have to use MPTCs, and we will probably want Sequence to be a subclass of that. Also, sooner or later we will move empty and isEmpty to the general Collection class, won't we? Are there many people who will want to use the new framework but stay with plain Haskell98?
The difficulty with trying to be compatible with a future abstract collection framework is that there is no consensus on what that framework should look like. Which is why the recent effort has focussed on concrete data structures. We might as well pick the interface that works best for sequences considered by themselves. It should still be possible to make these things instances of the classes of a Grand Unified Collection Framework whenever it arrives.