
On Monday 23 May 2005 18:41, Bulat Ziganshin wrote:
RP> On Mon, May 23, 2005 at 01:38:59PM +0200, Henning Thielemann wrote:
It would be great if we had a class for finite sequences with instances Data.List, Data.Array, Data.Sequence. Maybe the new identifiers (<|), (|>) and so on should be names of methods of a such a class instead of separate functions.
RP> What would that buy us? I can't think of many useful functions that RP> would use that interface, what with (<|) lazy for lists and strict for the other two, and (|>>) cheap for sequences and expensive for the other two.
at least, it will be great to have analogues of length, map, filter, partition and a number of other operations defined in classes and supported for variety of data structures. i think it's omission in H98 standard that this names belongs only to lists and not defined in some classes like (+) and (>)
A agree completely. Almost all of the functions in Data.Seq have the same name and type signature (modulo the data type) and provide the same functionality as the corresponding ones for lists (in the Prelude). A type class Sequence to capture these common features would be great. It would also mean we can import module Sequence unqualified. A problem is that the names conflict with the ones from the Prelude, so that this style can only be used when hiding all the list stuff from Prelude. Ben