RFC: general sequences
Henning Thielemann
lemming at henning-thielemann.de
Tue May 24 05:00:05 EDT 2005
On Tue, 24 May 2005, Ross Paterson wrote:
> On Mon, May 23, 2005 at 10:22:38PM +0200, Benjamin Franksen wrote:
>>
>> 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.
>
> This can't be fixed by adding a new class. We can't change the type of
> Prelude.length, and that includes generalizing it. The only alterative
> to hiding/qualification is to give our functions different names.
What is so bad about qualification? Although it might be cumbersome for
everyday functions like 'map' and infix operators it's good style for any
other functions. With qualification a user module would look like
import qualified SomeGoodNameForASequenceClassModule as GenSeq
import qualified Data.Sequence as Seq
filterEven :: GenSeq.C s => s Int -> s Int
filterEven = GenSeq.filter even
filterEven' :: Seq.T Int -> Seq.T Int
filterEven' = GenSeq.filter even
More information about the Libraries
mailing list