Proposal: add Monoid1 and Semigroup1 classes

David Feuer david.feuer at gmail.com
Sat Oct 1 01:49:48 UTC 2016


It seems to me that Data.Functor.Classes is the natural place for these,
but I guess I could stick them somewhere else.

On Sep 30, 2016 9:09 PM, "Mario Blažević" <blamario at ciktel.net> wrote:

> On 2016-09-30 07:25 PM, David Feuer wrote:
>
>>
>> I've been playing around with the idea of writing Haskell 2010 type
>> classes for finite sequences and non-empty sequences, somewhat similar
>> to Michael Snoyman's Sequence class in mono-traversable. These are
>> naturally based on Monoid1 and Semigroup1, which I think belong in base.
>>
>>
>      If the proposal is to add these directly to base, I'm against it. New
> classes should first be released in a regular package, and only moved to
> base once they prove useful.
>
>
> class Semigroup1 f where
>>   (<<>>) :: f a -> f a -> f a
>> class Semigroup1 f => Monoid1 f where
>>   mempty1 :: f a
>>
>> Then I can write
>>
>> class (Monoid1 t, Traversable t) => Sequence t where
>>   singleton :: a -> t a
>>   -- and other less-critical methods
>>
>> class (Semigroup1 t, Traversable1 t) => NESequence where
>>   singleton1 :: a -> t a
>>   -- etc.
>>
>>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20160930/a4f13f1c/attachment.html>


More information about the Libraries mailing list