-
Notifications
You must be signed in to change notification settings - Fork 16
Description
I propose that we move Foldable1
and Bifoldable1
from semigroupoids to base, as has been discussed many times over the years, and has most recently been championed by @phadej. His write-up found here contains a large collection of useful links to context and prior discussion. I invite you to read that; I couldn't possibly summarise all the discussion here.
Before we move these classes to base, I propose that we get their names right, along the lines discussed by @chessai and others on this semigroupoids issue (Foldable1 -> Semifoldable
, Bifoldable1 -> Semibifoldable
, with matching renamings for class members).
Hence this proposal involves multiple steps:
- Release version 6.0.0 of
semigroupoids
with a mass-renaming (Foldable1
toSemifoldable
,Bifoldable1
toSemibifoldable
, etc.) - Update downstream packages of
semigroupoids
to use the new major version and hence the naming scheme. - Let the ecosystem settle for a while.
- Move
Semifoldable
andSemibifoldable
tobase
.
We could alternatively do the renaming and relocation as one step, but this approach leads to a rather unfortunate migration path for users. I would prefer they be two simple and discrete steps, giving the considerable downstream package ecosystem time to breathe in between.
This proposal an additive (non-breaking) change to base, and so that step is relatively easy. Moving other classes from semigroupoids
to base
is explicitly out of scope for this proposal. Most or all other classes (such as Semitraversable
) require breaking changes elsewhere in the hierarchy (such as wedging Semiapplicative
into the Monad
hierarchy).
I note that this is as much a proposal about semigroupoids
as it is about base
; hence we would need the support of the semigroupoids
maintainers(cc. @ekmett).