Proposal: Add Foldable1 from 'semigroupoids' to base

Daniel Cartwright chessai1996 at
Thu Jun 7 19:12:48 UTC 2018

For those of you unfamiliar with 'Foldable1', it is a typeclass for
nonempty foldable structures, that centres around Semigroup instead of
I have made a differential on Phabricator for the change here:

Some discussion at the following links also:

Note: foldl1 and foldr1 are currently typeclass methods of 'Foldable' and
not 'Foldable1', and even though I think they should be, they probably (and
shouldn't) be removed in this change, though I hope that eventually they
can be moved to Foldable1.

Foldable1 is also unfortunately named due to the suffix '1' being
connotated with the conventions surrounded Data.Functor.Classes (Show1,
Eq1, etc.). If this naming is seen as sufficiently unfortunate/confusing
because of that, then perhaps the name should be changed to something like
'SemiFoldable'. The name change would most likely have to be made in
'semigroupoids' first if that is the case.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list